欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

win32之GDI3

程序员文章站 2022-04-02 22:57:58
...

接着上次的继续介绍,今天介绍画刷等其他绘图函数

和上次使用的开发环境以及配置一样。

画圆函数Arc()

win32之GDI3

 //在程序中需要画圆,先得有外接矩形,才有这个内切圆
//圆弧的起点允许不在圆上,1、可以在圆外,从这个起点到圆心连线,和圆的交汇处就是起点
//2、可以在圆内,从圆心到这个点做延长线,和圆的交点也就是起点
//3、可以在圆心,延X轴做延长线,和圆的交点 

//圆弧的终点同上

上代码

win32之GDI3

效果

win32之GDI3

2.画刷,画区域

预设的画刷是白色

画刷和画笔一样,也可以直接获取系统预设画刷,也可以自己创建画刷,具体步骤这里就不在重复了,不清楚可以参见上几次的介绍

这里直接以自己创建画刷为例(稍微和画笔有点区别)

HBRUSH hr = CreateSolidBrush(0x00ffff);//创建纯色的画刷

HBRUSH hr = CreateHatchBrush(HS_CROSS,0x0000ff);//创建风格画刷,风格是不透明 

先创建一个纯色画刷,然后画一个矩形看效果

代码

win32之GDI3

效果

win32之GDI3

可以看出,这个矩形是有边框的,怎么去除边框呢? 1,把画线的画笔设设置成无色,或者把画笔设置成黄色。

我们画笔设置成无色效果如下:

win32之GDI3

这里还有其他的绘图函数,比如

 设置一个矩形区域,然后用画刷填充,也可以达到画矩形的目的,而且画出的矩形,没有边框

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之GDI3

win32之GDI3

win32之GDI3

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之GDI3

我们可以看出来,使用位图画刷的时候,图片是平铺在窗口上,像贴地砖一样,然后我们矩形画的那一块会显露出来

后面我们会继续介绍win32的GDI 的位图

 

 

相关标签: win32