win32之GDI3
接着上次的继续介绍,今天介绍画刷等其他绘图函数
和上次使用的开发环境以及配置一样。
画圆函数Arc()
//在程序中需要画圆,先得有外接矩形,才有这个内切圆
//圆弧的起点允许不在圆上,1、可以在圆外,从这个起点到圆心连线,和圆的交汇处就是起点
//2、可以在圆内,从圆心到这个点做延长线,和圆的交点也就是起点
//3、可以在圆心,延X轴做延长线,和圆的交点//圆弧的终点同上
上代码
效果
2.画刷,画区域
预设的画刷是白色
画刷和画笔一样,也可以直接获取系统预设画刷,也可以自己创建画刷,具体步骤这里就不在重复了,不清楚可以参见上几次的介绍
这里直接以自己创建画刷为例(稍微和画笔有点区别)
HBRUSH hr = CreateSolidBrush(0x00ffff);//创建纯色的画刷
HBRUSH hr = CreateHatchBrush(HS_CROSS,0x0000ff);//创建风格画刷,风格是不透明
先创建一个纯色画刷,然后画一个矩形看效果
代码
效果
可以看出,这个矩形是有边框的,怎么去除边框呢? 1,把画线的画笔设设置成无色,或者把画笔设置成黄色。
我们画笔设置成无色效果如下:
这里还有其他的绘图函数,比如
设置一个矩形区域,然后用画刷填充,也可以达到画矩形的目的,而且画出的矩形,没有边框
RECT r = {100,100,900,500};
FillRect(hdc, &r, hr);//填充一个矩形区域,用hr代表的颜色
Ellipse(hdc, 202, 202, 500, 400); 画椭圆
Pie();画饼图
Chord();弦图 英 /kɔːd/同样,我们再创建一个风格画刷
HBRUSH hr = CreateHatchBrush(HS_CROSS,0x0000ff);//创建风格画刷,风格是不透明
win32预设了很多风格画刷,大家可以自己试试
当然,我们还可以创建位图画刷
代码如下
case WM_LBUTTONDOWN: { HBITMAP hBitMap = (HBITMAP)LoadImage(hInst, _T("girl.bmp"), IMAGE_BITMAP, 200, 200, LR_LOADFROMFILE); hdc = GetDC(hWnd); HPEN hPen = CreatePen(PS_NULL, 5, RGB(255, 0, 0)); HBRUSH hBrush = CreatePatternBrush(hBitMap); SelectObject(hdc, hBrush); SelectObject(hdc, hPen); Rectangle(hdc, 100, 100, 600, 600); DeleteObject(hBrush); DeleteObject(hPen); ReleaseDC(hWnd, hdc); } break;
效果
我们可以看出来,使用位图画刷的时候,图片是平铺在窗口上,像贴地砖一样,然后我们矩形画的那一块会显露出来
后面我们会继续介绍win32的GDI 的位图
上一篇: Python实现区域填充的示例代码
下一篇: Win32编程绘图实例--字母图