VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 588|回复: 3

mfc绘制的遮蔽效果会消失

[复制链接]
89_avatar_middle
最佳答案
0 
在线会员 发表于 2022-2-8 15:48:31 | 显示全部楼层 |阅读模式
  1.         CClientDC dc(GetDlgItem(IDC_PIC));
  2.         CDC  dcMem;
  3.         dcMem.CreateCompatibleDC(&dc);

  4.         CBitmap* pOldBitmap = dcMem.SelectObject(&m_bitmap);
  5.         AlphaBlend(dc, 0, 0, 100, 100, dcMem, 0, 0, 300, 300, m_bf);

  6.         dcMem.SelectObject(pOldBitmap);
复制代码

利用AlphaBlend()函数创建的遮蔽效果,当改变窗口大小时阴影区域会消失




上一篇:vs2022识别不了C语言库
下一篇:图片不显示是为什么呢?
90_avatar_middle
最佳答案
1 
在线会员 发表于 2022-2-8 16:05:36 | 显示全部楼层
强制重绘呢
89_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-2-8 16:09:46 | 显示全部楼层

可以详细一点吗,我是菜鸟mfc绘制的遮蔽效果会消失
90_avatar_middle
最佳答案
1 
在线会员 发表于 2022-2-8 17:05:18 | 显示全部楼层
InvalidateRect(&Rect)和Invalidate()两个函数形式和功能差不多,这两个函数并不会直接引起窗口或试图重绘,需要在处理WM_PAINT消息是才会引起无效窗口或无效矩形重绘。但Invalidate是使得整个窗口无效,形成无效矩形,而InvalidateRect(&Rect)是使得指定的区域无效。
Invalidate()申明无效,等待WM_PAINT消息以便重绘,队列中无其他消息时系统会自动发送。void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-29 10:46

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表