论文部分内容阅读
摘要:SDK中集成了多种绘图函数,给Windows编程人员提供了便利。本文將针对其中四种(Polyline,PolyPolyline,Polygon,PolyPolygon)作详细说明,并对比其调用方法和实现功能的不同。并提供自己编写这四种函数的思路,经试验,效果与SDK中函数效果基本一致。
关键词:SDK;绘图函数;Windows编程
一、Polyline
顶点数组有7个元素,分别是一个三角形的三个顶点,一个方形的四个顶点(其余函数测试都使用同一个顶点数组)。调用Polyline,Polyline只能画一条折线,即将7个顶点依次连接,若顶点个数参数设为3,则只连顶点数组的前三个点。
二、PolyPolyline
PolyPolyline可以画多条折线。设定好PolyPolyline的每条线顶点个数数组为{3,4},则前3个点和后4个点分别被连成两条线。
三、Polygon
Polygon画一个闭合的多边形并填色。首先此函数将7个点连接并自动将最后一个点和第一个点相连形成闭合图形,再填色。
四、PolyPolygon
PolyPolygon画多个多边形并填色。与PolyPolyline一样,设定好一个多边形用几个顶点和多边形个数的参数,PolyPolygon连接第一组顶点,首尾相连并填充,再连接第二组顶点,首尾相连并填充。
五、编写绘图函数
1.MyPolyline
仿照Polyline的参数和返回,三个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),csz(顶点个数),返回空。
数组地址apt为数组内第一个元素的地址,可以直接apt+i使指针在数组内移动。由于数组是结构体类型的,可以以地址访问结构体内成员,即apt->y。
函数编写思路简单,先用MoveToEx函数把画笔放到第一个顶点处,再for循环顶点个数-1次,每次都LineTo下一个顶点。
2.MyPolyPolyline
仿照PolyPolyline的参数和返回,四个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),CONST DWORD *asz(DWORD类型数组地址,每条折线的顶点个数),DWORD csz(折线条数),返回空。
apt使用与Polyline相同。asz也是数组地址,也表示该数组第一个元素的地址,但这个数组里的元素不是结构体,要用*取出,asz+i指针移动,*(asz + i)取出指针指向的元素值。
函数体是一个两层嵌套的for循环,循环前先定义i、j都为0,i控制指向顶点数组里第几个点,j控制在画第几条线。第一层循环是折线条数循环,循环折线条数次,MoveToEx把笔抬起放到下一个起始顶点,并让i++,让内层循环从下一个点开始连。内层循环是每条线内的顶点连线循环,循环次数由asz数组内的值决定。也可以内层调Polyline实现。3.MyPolyPolygon
仿照PolyPolyline的参数和返回,四个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),CONST INT *asz(INT类型数组地址,每条折线的顶点个数),DWORD csz(折线条数),返回空。
使用均同MyPolyPolyline。
函数体是一个for循环,循环内调用Polygon。Polygon的顶点数组参数是apt + i,i每次循环完加asz数组中这个多边形的顶点数,apt + i就移动到下一个多边形的第一个顶点处;Polygon的顶点数参数是*(asz+j)),j每次循环加1,即依次遍历asz数组的值。
参考文献
[1]云昌钦,袁灏.Microsoft Windows环境与编程基础[Z].
(作者单位:山东大学(威海)通信工程)
关键词:SDK;绘图函数;Windows编程
一、Polyline
顶点数组有7个元素,分别是一个三角形的三个顶点,一个方形的四个顶点(其余函数测试都使用同一个顶点数组)。调用Polyline,Polyline只能画一条折线,即将7个顶点依次连接,若顶点个数参数设为3,则只连顶点数组的前三个点。
二、PolyPolyline
PolyPolyline可以画多条折线。设定好PolyPolyline的每条线顶点个数数组为{3,4},则前3个点和后4个点分别被连成两条线。
三、Polygon
Polygon画一个闭合的多边形并填色。首先此函数将7个点连接并自动将最后一个点和第一个点相连形成闭合图形,再填色。
四、PolyPolygon
PolyPolygon画多个多边形并填色。与PolyPolyline一样,设定好一个多边形用几个顶点和多边形个数的参数,PolyPolygon连接第一组顶点,首尾相连并填充,再连接第二组顶点,首尾相连并填充。
五、编写绘图函数
1.MyPolyline
仿照Polyline的参数和返回,三个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),csz(顶点个数),返回空。
数组地址apt为数组内第一个元素的地址,可以直接apt+i使指针在数组内移动。由于数组是结构体类型的,可以以地址访问结构体内成员,即apt->y。
函数编写思路简单,先用MoveToEx函数把画笔放到第一个顶点处,再for循环顶点个数-1次,每次都LineTo下一个顶点。
2.MyPolyPolyline
仿照PolyPolyline的参数和返回,四个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),CONST DWORD *asz(DWORD类型数组地址,每条折线的顶点个数),DWORD csz(折线条数),返回空。
apt使用与Polyline相同。asz也是数组地址,也表示该数组第一个元素的地址,但这个数组里的元素不是结构体,要用*取出,asz+i指针移动,*(asz + i)取出指针指向的元素值。
函数体是一个两层嵌套的for循环,循环前先定义i、j都为0,i控制指向顶点数组里第几个点,j控制在画第几条线。第一层循环是折线条数循环,循环折线条数次,MoveToEx把笔抬起放到下一个起始顶点,并让i++,让内层循环从下一个点开始连。内层循环是每条线内的顶点连线循环,循环次数由asz数组内的值决定。也可以内层调Polyline实现。3.MyPolyPolygon
仿照PolyPolyline的参数和返回,四个参数分别是hdc,CONST POINT *apt(POINT类型数组地址,顶点数组信息),CONST INT *asz(INT类型数组地址,每条折线的顶点个数),DWORD csz(折线条数),返回空。
使用均同MyPolyPolyline。
函数体是一个for循环,循环内调用Polygon。Polygon的顶点数组参数是apt + i,i每次循环完加asz数组中这个多边形的顶点数,apt + i就移动到下一个多边形的第一个顶点处;Polygon的顶点数参数是*(asz+j)),j每次循环加1,即依次遍历asz数组的值。
参考文献
[1]云昌钦,袁灏.Microsoft Windows环境与编程基础[Z].
(作者单位:山东大学(威海)通信工程)