教程总目录:http://www.easyx.cn/skills/View.aspx?id=45 (里面包括VC下的graphics.h的配置方法)
注:学习本节前,请自备 MSDN,以便查阅 Windows GDI 函数。
EasyX的绘图函数最初是模仿的BGI的函数命名。为了让大家借此学习 Windows GDI 绘图,EasyX 增加了获取 HDC 句柄的功能。
对于 Windows GDI 中的绘图函数,很多都需要一个 HDC 句柄。我们用 GetImageHDC() 函数获取该句柄,然后就可以使用 Windows GDI 了。先看看例子吧:
#include <graphics.h>
#include <conio.h>
void main()
{
// 初始化绘图窗口,并获取HDC句柄
initgraph(640, 480);
HDC hdc = GetImageHDC();
// 以下是标准Windows GDI操作画一条线(相关语句,请查阅MSDN)
MoveToEx(hdc, 100, 100, NULL);
LineTo(hdc, 200, 200);
// 标准 Windows GDI 操作结束
// 使之前的 Windows GDI 操作生效
FlushBatchDraw();
// 按任意键返回
getch();
closegraph();
}
还可以针对 IMAGE 对象使用 GDI 绘图函数,看下面这个例子:
#include <graphics.h>
#include <conio.h>
void 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();
}
注意:
1. 通过 GetImageHDC() 获取绘图窗口的 HDC 时,绘图后需要执行 FlushBatchDraw() 使之生效;获取 IMAGE 的 HDC 无需执行 FlushBatchDraw()。
2. 这次的内容虽然少,但是 Windows GDI 的内容相当多,所以,完成本节的学习还是很不容易的。
3. Windows GDI 并没有设置颜色这样的函数,需要创建画笔(画刷)并选入画笔(画刷),并且在不用的时候记得删除。Windows GDI 相当的丰富,这里就不多做介绍了,感兴趣的请参考相关书籍。
4. 至于作业,其实从前几讲开始就没必要弄什么作业了,能坚持看下来的,相信都会自觉的写一些东西。