BestAns

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

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

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

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

EasyX的绘图函数最初是模仿的BGI的函数命名。为了让大家借此学习 Windows GDI 绘图,EasyX 增加了获取 HDC 句柄的功能。

对于 Windows GDI 中的绘图函数,很多都需要一个 HDC 句柄。我们用 GetImageHDC() 函数获取该句柄,然后就可以使用 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. 至于作业,其实从前几讲开始就没必要弄什么作业了,能坚持看下来的,相信都会自觉的写一些东西。
分享到

评论 (2) -

  • 为什么“VC绘图/游戏简易教程”这个系列没有继续更新下去啊?我感觉好像写得挺好的啊,也确实通过这里学懂了某些东西,为什么不继续更新下去呢?