GDI绘图

本文介绍MFC中GDI绘图的基本概念,包括如何使用画笔和刷子进行绘图,以及内存绘图的技术细节和应用场景,帮助读者掌握防止屏幕闪烁的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 刷子和画笔是MFC作图中是使用最多的GUI对象,本节在讲解刷子和画笔使用方法的同时也讲述一写基本作图函数。

    在画点或画线时系统使用当前DC中的画笔,所以在创建画笔后必须将其选入DC才会在绘图时产生效果。画笔可以通过CPen对象来产生,通过调用CPen::CreatePen( int nPenStyle, int nWidth, COLORREF crColor )来创建

刷子是在画封闭曲线时用来填充的颜色,例如当你画圆形或方形时系统会用当前的刷子对内部进行填充。刷子可利用CBrush对象产生

对于矩形,圆形或类似的封闭曲线,系统会使用画笔绘制边缘,使用刷子填充内部。如果你不希望填充或是画出边缘,你可以选入空刷子(NULL_PEN)或是(NULL_BRUSH)空笔。

新浪博客 DC的使用

https://www.cnblogs.com/weiqubo/archive/2009/12/24/1930029.html mfc中的GDI绘图

VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)-软件开发-鸡啄米 图形图像:CDC类及其屏幕绘图函数

Windows GDI 教程(一) 一个简单的绘图程序_windows编程gdi简易推箱子-优快云博客 一个简单的绘图程序(windows gdi 一个简单的绘图程序)

使用Windows API进行GDI窗口绘图_winapi.gdipapi-优快云博客 使用Windows API进行GDI窗口绘图

内存绘图

首先理解内存绘图,即把要绘制的东西先在内存中画好,然后一次性的画到屏幕上来。内存绘图经常用来防止闪烁。因为闪烁的原因是因为反差太大。例如你的绘图过程是先用白色擦除整个窗口,然后再将黑色的文字画到屏幕上来,这样在窗口重绘的时候,原本黑色文字区域就会白光一闪,然后再出现文字,也就是我们说的闪烁了。而内存绘图的过程呢,是先创建一个内存DC,然后在这个DC上把要绘制的图形画好,之后一次性的填到屏幕上去。

  示例代码如下:

HDC hDestDC;

RECT rc;

//..此处得到目标的HDC和目标的RECT

HDC hdc = ::CreateCompatibleDC (hDestDC);

HBITMAP hBitmap = ::CreateCompatibleBitmap (hDestDC, rc.right, rc.bottom);

HBITMAP hOldBitmap = ::SelectObject (hDC, hBitmap);

//... 此处用hdc进行绘图

//...

::BitBlt (m_hDestDC, rc.left, rc.top, rc.Width(), rc.Height(), hDC, rc.left, rc.top, SRCCOPY);

::SelectObject (hDC, hOldBitmap);

win32 窗口 双缓冲技术 内存DC 绘制直线 --- Mem DC_memdc-优快云博客  win32 窗口 双缓冲技术 内存DC 绘制直线 --- Mem DC

内存DC和屏幕DC_窗口dc是什么-优快云博客 内存DC和屏幕DC

https://www.cnblogs.com/weiqubo/archive/2011/03/19/1989112.html  GDI编程重要经验谈(含内存绘图)

https://www.cnblogs.com/Yogurshine/p/3729546.html GDI+ 和GDI

DC是GDI的核心,Graphics对象是GDI+的核心。

gdi坐标映射??????

GDI映射方式_xp系统gdi的字体映射机制-优快云博客 gdi映射方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值