BestAns

路漫漫其修远兮,吾将上下而求索

VC绘图/游戏简易教程--16:设备上下文句柄(Windows 编程入门2) 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

注:学习本节前,请自备 MSDN,以便查阅 Windows GDI 函数。

对于 Windows GDI 中的绘图函数,操作目标通常是 DC(Device Context),因此需要传入一个 DC 的句柄,数据类型为 HDC(Handle of Device Context)。用 GetImageHDC() 函数可以获取 EasyX 的绘图窗口或 IMAGE 对象的句柄,然后就可以使用 Windows GDI 函数进行绘图操作。看以下示例:

#include <graphics.h>
#include <conio.h>

int main()
{
	// 初始化绘图窗口,并获取 HDC 句柄
	initgraph(640, 480);
	HDC hdc = GetImageHDC();

	// 以下是标准 Windows GDI 操作画一条线(相关语句,请查阅 MSDN)
	MoveToEx(hdc, 100, 100, NULL);
	LineTo(hdc, 200, 200);
	// 标准 Windows GDI 操作结束

	// 按任意键返回
	_getch();
	closegraph();
	return 0;
}

还可以针对 IMAGE 对象使用 GDI 绘图函数,看下面这个例子:

#include <graphics.h>
#include <conio.h>

int main()
{
	// 初始化绘图窗口
	initgraph(640, 480);

	// 创建 300x300 的 IMAGE 对象,并获取其 HDC 句柄
	IMAGE img(300, 300);
	HDC hdc = GetImageHDC(&img);

	// 以下是标准 Windows GDI 操作画一条线(相关语句,请查阅 MSDN)
	MoveToEx(hdc, 100, 100, NULL);
	LineTo(hdc, 200, 200);
	// 标准 Windows GDI 操作结束
	
	// 将 img 贴到绘图窗口上:
	putimage(0, 0, &img);

	// 按任意键返回
	_getch();
	closegraph();
	return 0;
}

注意:

  1. 这次的内容虽然少,但是 Windows GDI 的内容相当多,所以,完成本节的学习还是很不容易的。
  2. Windows GDI 并没有设置颜色这样的函数,需要创建画笔(画刷)并选入画笔(画刷),并且在不用的时候记得删除。Windows GDI 相当的丰富,这里就不多做介绍了,感兴趣的请参考相关书籍。
  3. 至于作业,其实从前几讲开始就没必要弄什么作业了,能坚持看下来的,相信都会自觉的写一些东西。

添加评论