1.坐标空间和转换
(1)坐标空间:Win32应用程序编程接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间和物理设备空间,应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射,Win32 API把世界坐标系空间和页面空间称为逻辑空间,物理设备空间通常是指应用程序的客户区,但它也包括整个桌面、完整的窗口等
(2)转换:把对象从一个坐标空间按复制到另一个坐标空间时改变或转变这一对象的大小、方向和形态
在实际绘图时,世界坐标系空间中的一个区域要先被映射到页面空间,然后由页面空间映射到设备空间,设备空间通常它的左上角时(0,0)点,然后再由设备空间映射到物理设备空间(通常就是屏幕)于是图形就在屏幕上显示出来了
(3)设备环境属性:窗口原点、视口原点、窗口范围、视口范围,其中窗口基于逻辑坐标的(像素、毫米、英寸等为单位),视口基于设备坐标的(像素),通常视口与客户区相同
页面空间到设备空间的转换所用的是两个矩形的宽与高的比率,其中页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口,Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种装换
(4)设备空间到物理空间的转换只限于平移,并由Windows窗口管理部分控制
(5)SetWorldTransform函数:世界坐标空间
(6)逻辑坐标和设备坐标间相互转换
2.图形的保存和重绘
(1)将图形保存起来,在OnDraw函数中完成图形的输出
(2)新建一个类,定义成员变量,保存图形的类型、起点、终点
(3)在CGraphicView中构建一个容器(CPtrArray)存放新建的类的对象指针,每画一个图形新建一个对象存放图形的信息(不要用局部对象,要在堆上分配,最后释放)
(4)在OnDraw函数中将对象中保存的图形输出
3.OnPaint与OnDraw
(1)窗口重绘时会发送一个WM_PAINT消息,它的响应函数是OnPaint,CWiew类在OnPaint的实现中调用OnDraw函数,所以在OnDraw函数中画的图形能一直显示</