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 的位图

猜你喜欢

转载自blog.csdn.net/ASZSYJ/article/details/82115755