?
?
?
?
?
?
? CDC::BOOL Rectangle( LPCRECT lpRect ); 矩形 CDC::RoundRect( LPCRECT lpRect, POINT point ); 圆角矩形 CDC::Draw3dRect( int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight ); 3D边框 CDC::Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); 扇形 CDC::Ellipse( LPCRECT lpRect ); 椭圆形 CDC::Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); CDC::Polygon( LPPOINT lpPoints, int nCount ); 多边形
对于矩形,圆形或类似的封闭曲线,系统会使用画笔绘制边缘,使用刷子填充内部。如果你不希望填充或是画出边缘,你可以选入空刷子(NULL_PEN)或是(NULL_BRUSH)空笔。 下面的代码创建一条两象素宽的实线并选入DC。并进行简单的作图:
{
...
CPen pen; pen.CreatePen(PS_SOLID,2,RGB(128,128,128));
...
} CPen* pOldPen=(CPen*)dc.SelectObject(&pen); dc.SelectStockObject(NULL_BRUSH);//选入空刷子 dc.Rectangle(CRect(0,0,20,20));//画矩形
2.4 在窗口中绘制设备相关位图,图标,设备无关位图
在Windows中可以将预先准备好的图像复制到显示区域中,这种内存拷贝执行起来是非常快的。在Windows中提供了两种使用图形拷贝的方法:通过设备相关位图(DDB)和设备无关位图(DIB)。
DDB可以用MFC中的CBitmap来表示,而DDB一般是存储在资源文件中,在加载时只需要通过资源ID号就可以将图形装入。BOOL CBitmap::LoadBitmap( UINT nIDResource )可以装入指定DDB,但是在绘制时必须借助另一个和当前绘图DC兼容的内存DC来进行。通过
CDC::BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop )绘制图形,同时指定光栅操作的类型。BitBlt可以将源DC中位图复制到目的DC中,其中前四个参数为目的区域的坐标,接下来是源DC指针,然后是源DC中的起始坐标,由于BitBlt为等比例复制,所以不需要再次指定长宽,(StretchBlt可以进行缩放)最后一个参数为光栅操作的类型,可取以下值:
?
?
? BLACKNESS 输出区域为黑色 Turns all output black. DSTINVERT 反色输出区域 Inverts the destination bitmap. MERGECOPY 在源和目的间使用AND操作 Combines the pattern and the source
bitmap using the Boolean AND operator.
? MERGEPAINT 在反色后的目的和源间使用OR操作 Combines the inverted source
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-35251-11.html
突然想到陌上人如玉公子世无双TAo的火热足以让冰雪融化