如何实现异形控件?

BenKwan 2006-10-31 02:02:08
要根据一些不规则的图片作出一些异形的控件,搜索过!但是对“掩模”不太清楚!如果获得图片的有效点击区域!使用一个矩阵还是???会的朋友,高手指导指导!
...全文
243 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenKwan 2006-11-02
  • 打赏
  • 举报
回复
楼上的用的是自己指定的热点区域吗?
AIRFLYNET 2006-10-31
  • 打赏
  • 举报
回复
CreatePolygonRgn
The CreatePolygonRgn function creates a polygonal region.

HRGN CreatePolygonRgn(
CONST POINT *lppt, // array of points
int cPoints, // number of points in array
int fnPolyFillMode // polygon-filling mode
);
BenKwan 2006-10-31
  • 打赏
  • 举报
回复
控制只有mask里面那部分的区域可相应事件是代码是哪?
新手!不太熟!
BenKwan 2006-10-31
  • 打赏
  • 举报
回复
虽然还未怎么看懂先手下!!THANKS!
happyness44 2006-10-31
  • 打赏
  • 举报
回复
void CMyWnd::Display(CDC *pDC, UINT nMaskId)
{
// 获得窗体矩形
CRect rectWnd;
this->GetWindowRect(rectWnd);

// 读取位图资源
CBitmap myBitmap,*pOldBitmap;
myBitmap.LoadBitmap(nMaskId);

// 创建"内存一致"设备
CDC memDC;
memDC.CreateCompatibleDC(pDC);

// 选择绘图设备
pOldBitmap = memDC.SelectObject(&myBitmap);

// 创建窗体的初始区域
CRgn rgnWnd,rgnTemp;
rgnWnd.CreateRectRgn(0,0,rectWnd.Width(),rectWnd.Height());

int nWidth,nHeight;
COLORREF color;
for (nWidth = 0;nWidth <= rectWnd.Width()-1;nWidth++)
{
for (nHeight = 0;nHeight <= rectWnd.Height();nHeight++)
{
color = memDC.GetPixel(nWidth,nHeight);

// 当象素是白色时,去掉该点
if (color == RGB(255,255,255))
{
rgnTemp.CreateRectRgn(nWidth,nHeight,nWidth+1,nHeight+1);
rgnWnd.CombineRgn(&rgnWnd,&rgnTemp,RGN_XOR);
rgnTemp.DeleteObject();
}
}
}

memDC.SelectObject(pOldBitmap);
SetWindowRgn((HRGN)rgnWnd,FALSE);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧