vc++根据图片定制不规则窗口
来源:互联网 发布:多核cpu工作原理 知乎 编辑:程序博客网 时间:2024/05/01 09:49
1、根据图片生产不规则区域
void CMyDlg::SetupRegion(CDC *pDC, UINT BackBitmapID, UINT MaskBitmapID, COLORREF TransColor){//根据图片,生成窗口CDC memDC;CBitmap cBitmap;CBitmap *pOldMemBmp=NULL;COLORREF col;CRect cRect;int x,y;CRgn wndRgn,rgnTemp;BITMAP bmpInfo;//取得窗口大小GetWindowRect(&cRect);//装载模板位图cBitmap.LoadBitmap(MaskBitmapID);cBitmap.GetBitmap(&bmpInfo); cRect.right=cRect.left+bmpInfo.bmWidth; cRect.bottom=cRect.top+bmpInfo.bmHeight;m_rect=cRect; //m_rect为全局变量,用于窗口重绘memDC.CreateCompatibleDC(pDC);pOldMemBmp=memDC.SelectObject(&cBitmap);//首先创建默认的完整区域为完整的对话框窗口区域wndRgn.CreateRectRgn(0,0,cRect.Width(),cRect.Height());//下面2层循环为检查背景位图象素颜色,当象素颜色为指定的透明颜色时,将//该点从区域中裁掉for (x=0;x<=cRect.Width();++x){for (y=0;y<=cRect.Height();++y){col=memDC.GetPixel(x,y);if (col==TransColor){//象素颜色为指定的透明颜色,创建透明的微区域rgnTemp.CreateRectRgn(x,y,x+1,y+1);//从完整的区域中裁掉透明的微区域wndRgn.CombineRgn(&wndRgn,&rgnTemp,RGN_XOR);rgnTemp.DeleteObject();}}}if (pOldMemBmp){memDC.SelectObject(pOldMemBmp);}//指定窗口为显示的区域,并擦出窗口重绘SetWindowRgn((HRGN)wndRgn,TRUE);}
2、给窗体贴背景
BOOL CMyDlg::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call default// TODO: Add your message handler code here and/or call defaultCRect rect=m_rect; CBitmap m_pBmp;BITMAP bm;CDC dcMem;m_pBmp.LoadBitmap(IDB_BITMAPMAIN);m_pBmp.GetBitmap(&bm);dcMem.CreateCompatibleDC(pDC);CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp);pDC->SetStretchBltMode(COLORONCOLOR);pDC->StretchBlt(0,0,rect.Width() ,rect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);dcMem.SelectObject(pOldBitmap); return TRUE;}
3、调用: 在对话框初始化的时候调用
4、缺点: 这种方法因为要进行大量的计算,所以比较耗费时间,对话框初始化时间较长
5、最终效果图:
- vc++根据图片定制不规则窗口
- VC创建不规则窗口
- 用VC++实现不规则窗口
- VC++实现不规则窗口说明
- 用VC++实现不规则窗口
- VC++实现不规则窗口说明
- VC创建自定义不规则窗口
- vc 实现透明窗口和不规则窗口
- delphi根据不同图片生成不规则窗口的实现(仅限于BMP格式)
- VC---创建一个不规则形状的窗口
- VC中实现不规则对话框(窗口)
- Java根据图片建立不规则窗体详解
- Java根据图片建立不规则窗体详解
- Java根据图片建立不规则窗体详解
- GDI+ - 使用PNG图片打造不规则窗口
- linux下显示不规则图片窗口
- windows sdk 根据位图,动态创建不规则窗口
- 不规则窗口
- 优化移动AIR应用程序的性能
- 读写word文档
- 多触点与触屏事件详解(单一监听、事件分发)
- 如何把store里的所有数据转换成JSON传给后台
- js判断时间格式及时间大小
- vc++根据图片定制不规则窗口
- 自己实现RMI(三)对象序列化与反序列化
- Linux设备驱动之I2C架构分析
- oracle11g--重新配置em
- 书写是为了更好的思考
- test
- WebKit介绍及总结
- Hibernate 经典学习资料
- Using GNU C __attribute__