MFC自绘
文章平均质量分 52
云中飞鸿
这个作者很懒,什么都没留下…
展开
-
DrawItem()内部一般实现内容步骤
【代码】DrawItem()内部一般实现内容步骤。原创 2023-10-20 15:08:38 · 116 阅读 · 0 评论 -
CBitmap、CreateCompatibleBitmap、CreateBitmap
第二个区别意味着:非兼容位图拷贝到显示界面上往往需要进行颜色转换,因为它要符合显示驱动的颜色格式才能正常地显示出来,常用的位图格式是24位RGB888,而显示驱动常用的格式是16位RGB565、32位ARGB8888,自然免不了转换,这部分工作都是在显示驱动中进行的,如果仅有一两次转换或少量像素的转换可能不会有什么,但如果是大量的绘图操作,意味着每次拷贝都会进行转换,这将把宝贵的系统资源消耗在位图的转换上。二、兼容位图CreateCompatibleBitmap和非兼容位图CreateBitmap的区别。原创 2023-10-20 15:00:35 · 326 阅读 · 0 评论 -
StretchBlt()、Bitblt用法详解
BitBlt函数功能:把像素从一个设备环境(源)的矩形区域,传输到另一个设备环境(目标)中的一个同样大小的矩形区域。再使用OR运算符将该操作结果与目标矩形组合。前面四个参数也是和目标矩形(也即是我们的图像控件区域)相关的,如果是图像控件的话,起点坐标也是(0,0),终点坐标就是矩形区的宽度和高度;· SRCERASE 反转目标矩形的颜色,再使用AND运算符将该结果与源位图组合。· MERGEPAINT 使用OR运算符组合源位图的反色与目标矩形的颜色。原创 2023-10-19 22:43:04 · 605 阅读 · 0 评论 -
自绘 控件
中子控件要绘制的时候框架就会向父窗口发送WM_DRAWITEM消息,而父窗口会在WM_DRAWITEM消息响应函数OnDrawItem()里调用子控件的DrawItem()函数,所以我们既可以在父窗口的OnDrawItem()函数里绘制控件,也可以。不是所有设置成自画类型的控件都会调用父窗口的OnDrawItem,例如ListBox的自画,你就必须重载CListBox的DrawItem方法和MeasureItem方法才可以,但按钮、菜单等的自画则会调用OnDrawItem。原创 2023-10-19 17:37:03 · 81 阅读 · 0 评论 -
GetCapture、SetCapture()、ReleaseCapture:鼠标移动的捕获与释放
同一时间只能有一个前景窗口可以捕获鼠标。当在控件上按下鼠标时,会自动执行SetCapture(),这时该控件的鼠标移动事件在全屏都会触发,松开鼠标按键时自动执行ReleaseCapture释放捕获。OnMouseMove(UINT nFlags, CPoint point){}中会使用到这3个函数。SetCapture():通过句柄设置指定窗口来捕获鼠标的输入。ReleaseCapture:释放当前捕获鼠标的窗口的捕获功能。GetCapture:返回当前捕获鼠标输入的窗口的句柄。原创 2023-10-19 16:02:50 · 247 阅读 · 0 评论 -
CImageList 图像列表
nGrow 具体解释:图像列表空间不够而继续添加image时,将按照nGrow继续分配空间,设计时根据具体情况设置合适的值,避免内存频繁的改变图像列表,因为过度频繁会使系统记忆体碎片化。但参数到底设置多少,还是要根据实际的情况设置合理的值,一要避免浪费空间,又要避免频繁的对Image容器进行resize操作。nGrow:当初始分配的图像个数不够的时候,新增一个图片时,指定图象列表能增加的新图象个数(难理解);nFlags:创建图像列表的类型,包括4/8/16/24/32/位色;原创 2023-10-19 14:25:51 · 466 阅读 · 0 评论 -
双缓冲刷新图像:避免自绘时图像闪烁
将前端缓冲区中的图像拷贝到显存完成图像的显示过程。双缓冲绘图的目的是为了解决:屏幕闪烁问题!在Windows中每一种设备都在内存中有一个设备描述表与其对应,这个。通过BitBlt函数:将后端缓冲区 手动拷贝到 前端缓冲区;MemDC:是手动创建的一个内存设备描述表(后端缓冲区);这里的pDC:是窗口设备描述表(前端缓冲区);的与设备描述表缓冲区(前端缓冲区)相。,除了设备描述表以外,还有一个需要。采用双缓冲绘图是在内存中有。的将设备描述表中的图像。原创 2023-10-19 14:01:11 · 285 阅读 · 0 评论 -
Invalidate 和 UpdateWindow的区别
中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。区别:调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等。2、UpdateWindow( )的作用是:使窗口立即重绘。使整个窗口客户区无效,并进行更新显示;原创 2023-10-19 10:49:50 · 92 阅读 · 0 评论 -
自绘 控件
1。原创 2023-10-16 14:37:59 · 22 阅读 · 0 评论