?? img2rgn.h
字號(hào):
#ifndef _IMG2RGN_H
#define _IMG2RGN_H
#include "jwfcx.h"
class JWX_EXT_CLASS CImg2Rgn
{
public:
CImg2Rgn();
~CImg2Rgn();
//取得所設(shè)的BMP中的區(qū)域
BOOL GetRgn( CRgn & rgn );
//將給定的BMP內(nèi)容轉(zhuǎn)到自己的數(shù)組中
void SetBMP( CBitmap * pBMP );
//將一個(gè)二維的字節(jié)數(shù)組綁定到本對(duì)象,
//在GetRgn時(shí),必須保證綁定的pData有效
void AttachData( LPVOID pData, long width, long height );
/*關(guān)于m_clrMask及其相關(guān)說明:
m_clrMask指定要透明的像素,即,除此值以外的像素會(huì)被看作是一個(gè)區(qū)域
缺省值為RGB( 255, 0, 255 )
本類目前功能并不十分完善,要求輸入的BMP符合下列條件:
1、要取出的區(qū)域必須是連通的,如果有兩個(gè)以上的非m_clrMask像素區(qū)域,
則只有一個(gè)會(huì)被轉(zhuǎn)化為區(qū)域并取出,另一個(gè)將丟失
2、連通區(qū)域的寬度要在兩像素以上,否則區(qū)域會(huì)出現(xiàn)錯(cuò)誤
3、被完全包含在非m_clrMask區(qū)域中m_clrMask像素會(huì)被作為一般像素處理,不能透明
*/
COLORREF m_bmpMaskClr;
//在內(nèi)部描述圖像的單元值
unsigned char m_cMask;
unsigned char m_cIMG;
unsigned char m_cMark;
protected:
//追加一個(gè)點(diǎn)
void AddPoint( POINT point );
//重設(shè)鏈點(diǎn)記錄區(qū)的大小
void ResizePoint( long newSize );
//測(cè)試給定的點(diǎn)是否是區(qū)域邊界
BOOL IsBoundary( POINT point );
//找到與point相連的下一個(gè)邊界點(diǎn)
BOOL FindNextPoint( POINT & point );
//取得所有的邊界鏈點(diǎn)
BOOL GetBoundaryPoint();
//回逆鏈點(diǎn),GetBoundaryPoint()搜索到只有一個(gè)像素寬的地方時(shí)就無法
//繼續(xù),這時(shí)可用本函數(shù)沿已搜到的鏈點(diǎn)回逆,如果返回真值,表示找到
//一個(gè)點(diǎn),沿此點(diǎn)GetBoundaryPoint()可繼續(xù)前進(jìn),如果返回假值,表示
//已回逆到起點(diǎn)且與起點(diǎn)相連的點(diǎn)已無搜索的必要
BOOL PrevPoint( POINT & point );
//刪除位圖數(shù)據(jù)塊
void FreeImgData();
unsigned char GetCell( POINT & point)
{
return m_pImgData[ point.x + point.y*m_bmWidth ];
};
void SetCell( POINT & point, unsigned char value )
{
m_pImgData[ point.x + point.y*m_bmWidth ] = value;
};
LPPOINT m_pPoint; //記錄邊界鏈點(diǎn)的數(shù)據(jù)塊
long m_pointGrow; //鏈點(diǎn)每次增長(zhǎng)的幅度,視不同的應(yīng)用,可設(shè)為不同值以提高AddPoint()的效率
long m_pointSize; //已分配的鏈點(diǎn)數(shù)據(jù)塊大小
long m_curPointID; //記錄未使用的最小單元ID
long m_bmWidth, m_bmHeight; //BMP的高和寬
unsigned char * m_pImgData; //BMP的MASK映像
BOOL m_isAttachData;
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -