java gdi_【Windows编程】系列第五篇:GDI图形绘制

6c4765b3a1b52f2d97397b588488562b.png

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图。Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解。GDI可以绘制点、直线曲线、填充封闭区域、位图以及文本,其中文本部分已经在上一篇中将了,请参考【Windows编程】系列第三篇:文本字符输出。

跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我们知道,HDC可以在处理WM_PAINT的时候用BeginPaint函数获取,也可以从GetDC、GetWindowDC拿到。

既然是画图,就少不了颜色的描述,Windows中的颜色有几种表示,其中COLORREF在GDI绘制中用的最多,它实际上是一个无符号32为整型。其中红、绿、蓝各占一个字节,最高字节不使用,如下图所示:

1f59b68724ff35b7dd8de53b14f8997e.png

该值可以用Windows提供的RGB宏来生成,Windows中RGB的定义为:

#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))

除此之外,Windows还有结构体RGBQUAD也表示颜色,这种一般用于位图结构信息中。

画像素点

Windows提供了SetPixel和GetPixel函数来设定和获取像素点的颜色。函数原型为:

COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);

COLORREF GetPixel(HDC hdc, int nXPos, int nYPos);

该函数并不常使用。

画笔画刷

在图形绘制之前,可以创建画笔给后续的画图使用,创建画笔的API函数为:

HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor);

HBRUSH CreateSolidBrush(COLORREF crColor);

HBRUSH CreatePatternBrush(HBITMAP hbmp);

HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref);

它可以指定画笔风格,宽度和颜色。风格可以是实线、虚线、点虚线等,具体参考MSDN说明的各种类型。

画线条

Windows提供的画线条函数有十几个,常用的直线绘制为LineTo,多条线段一般用Polyline、PolylineTo、PolyPolyine等,曲线可以画椭圆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值