指定区域画图

computerjjk 2004-11-25 12:02:37
1。如果我要在一个原形区域加载一副位图--假设圆半径 30象素,图是60*60象素,中间有一30象素半径圆,我如何才能将位图上非圆部分不显示?
2。我想从新画滚动条,但不知如何响应鼠标点击小箭头时使视图移动,我用movewindow会闪。
谢谢
...全文
96 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hifan 2004-11-25
  • 打赏
  • 举报
回复
Windows程序设计~!原版教程上面有的哦~!
自己看看吧~!
try876 2004-11-25
  • 打赏
  • 举报
回复
建议看看圆形按钮的代码实现,应该有帮助
hifan 2004-11-25
  • 打赏
  • 举报
回复
CPaintDC dc(this);

CBitmap m_Bmp;
m_Bmp.LoadBitmap(IDB_BITMAP1);

CDC DcMemImg, DcMemTemp;
DcMemImg.CreateCompatibleDC(&dc);
DcMemTemp.CreateCompatibleDC(&dc);

BITMAP Bitmap;
m_Bmp.GetBitmap(&Bitmap);
INT cx=Bitmap.bmWidth;
INT cy=Bitmap.bmHeight;

////////////////画一个Bitmap
CBitmap Temp;
Temp.CreateBitmap(cx,cy,1,1,NULL);
DcMemTemp.SelectObject(&Temp);
DcMemTemp.SelectObject(GetStockObject(BLACK_BRUSH));
DcMemTemp.Rectangle(0, 0, cx, cy);
DcMemTemp.SelectObject(GetStockObject (WHITE_BRUSH));
DcMemTemp.Ellipse(0, 0, cx, cy);
////////////////

CBitmap* OldBitmap=(CBitmap*)DcMemImg.SelectObject(&m_Bmp);

DcMemImg.BitBlt(0,0,cx,cy,&DcMemTemp,0,0,SRCAND);

dc.BitBlt(0,0,cx,cy,&DcMemTemp,0,0,0x220326); // 0x220326[反色] SRCCOPY的反
dc.BitBlt(0,0,cx,cy,&DcMemImg,0,0,SRCPAINT); // SRCAND的反

这个应该可以拉~!
哈哈~!不客气~! :)
hifan 2004-11-25
  • 打赏
  • 举报
回复
CPaintDC dc(this);

CBitmap m_Bmp;
m_Bmp.LoadBitmap(IDB_BITMAP1);

CDC DcMem, DcMem2;
DcMem.CreateCompatibleDC(&dc);

BITMAP Bitmap;
m_Bmp.GetBitmap(&Bitmap);
INT cx=Bitmap.bmWidth;
INT cy=Bitmap.bmHeight;

CBitmap* OldBitmap=(CBitmap*)DcMem.SelectObject(&m_Bmp);

dc.SelectObject(GetStockObject(BLACK_BRUSH));
dc.Rectangle(0,0,cx,cy);
dc.SelectObject(GetStockObject(WHITE_BRUSH));
dc.Ellipse(0,0,cx,cy);

dc.BitBlt(0,0,cx,cy,&DcMem,0,0,SRCAND);

DcMem.SelectObject(&OldBitmap);

不知行不行~!

15,980

社区成员

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

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