GDI绘图

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

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

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

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

http://blog.sina.com.cn/s/blog_75a3cf370100yo1q.html DC的使用

 

 

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

http://www.jizhuomi.com/software/244.html 图形图像:CDC类及其屏幕绘图函数

https://blog.csdn.net/OKVSA/article/details/79980894 一个简单的绘图程序(windows gdi 一个简单的绘图程序)

https://blog.csdn.net/kakaxi2222/article/details/52088692 使用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);

 

https://blog.csdn.net/wowocpp/article/details/79291236  win32 窗口 双缓冲技术 内存DC 绘制直线 --- Mem DC

https://blog.csdn.net/schao501917/article/details/52188757 内存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座标映射??????

https://blog.csdn.net/qq_33001647/article/details/60870632 gdi映射方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章