Windows程序设计:直线绘制
来源:互联网 发布:网络人身攻击怎么办 编辑:程序博客网 时间:2024/06/06 14:16
Windiows程序设计中绘制直线的重要函数:
MoveTo()函数:线段的起点位置
绘制直线方法如下:
具体使用案例:画正方形
PolyLine函数:
使用案例 画一个正方形:
原理:设置位于三角函数上的N对坐标,然后利用Polyline函数把坐标连起来
LineTo():线段的终点位置
参数如下:
BOOL MoveToEx( _In_ HDC hdc, //窗口句柄 _In_ int X, //像素X坐标 _In_ int Y, //像素Y坐标 _Out_ LPPOINT lpPoint //传入之前的坐标点);
绘制直线方法如下:
MoveToEx(hdc, 100, 100, NULL); //线段起始坐标LineTo(hdc, 200, 100); //线段终止坐标之后函数会保留上一个LineTo的坐标点,以便下一次LineTo的使用
绘制一个正方形
表格的绘制:
MoveToEx(hdc, 100, 100, NULL); LineTo(hdc, 200, 100);LineTo(hdc, 200, 200);LineTo(hdc, 100, 200);LineTo(hdc, 100, 100);
GetClientRect(hWnd, &rect);for (int i = 0; i <= rect.right; i += 100){MoveToEx(hdc, i, 0, NULL);LineTo(hdc, i, rect.bottom);}for (int j = 0; j <= rect.bottom; j += 100){MoveToEx(hdc, 0, j, NULL);LineTo(hdc, rect.right, j);}效果如下:
POINT结构体(用来标记窗体上的一个像素点):
typedef struct tagPOINT{ LONG x; LONG y;} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
vPOINT apt[5] = {100,100,200,100,200,200,100,200,100,100};MoveToEx(hdc, apt[0].x, apt[0].y, NULL);for (int i = 1; i < 5; ++i) LineTo(hdc, apt[i].x, apt[i].y);
PolyLine函数:
根据所给的一些列坐标点画图
BOOL Polyline( _In_ HDC hdc, _In_ const POINT *lppt, //POINT结构数组 _In_ int cPoints //像素点的个数);
POINT apt[5] = { 100,100,200,100,200,200,100,200,100,100 };Polyline(hdc, apt, 5);
Polyline函数和PolyLineto函数的区别:
Polyline函数绘制图形后不会移动画笔位置
PolylineTo函数在绘制图形后会移动画笔位置
绘制三角函数:
首先设置窗体边框大小
static int cxClient;static int cyClient;
case WM_SIZE: {cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);}break;
然后进行绘制
//画三角函数//绘制坐标轴MoveToEx(hdc, 0, cyClient/2, NULL);LineTo(hdc, cxClient, cyClient / 2);POINT apt2[pointNums];for (int i = 0; i < pointNums; ++i) {apt2[i].x = i * (cxClient / pointNums);apt2[i].y = (int)((cyClient/2) * (1 - sin(i * 2*(3.1415926)/pointNums)));}Polyline(hdc, apt2, pointNums);
原理:设置位于三角函数上的N对坐标,然后利用Polyline函数把坐标连起来
阅读全文
0 0
- Windows程序设计:直线绘制
- Windows程序设计:边框绘制函数
- 绘制直线
- windows程序设计(7):绘制贝塞尔曲线
- windows程序设计——绘制和更新
- Windows程序设计之绘制小方块
- 绘制直线和直线剪切
- 高速直线绘制程序
- 直线绘制算法
- 绘制一条直线
- 使用GDI绘制直线
- LineTo直线的绘制
- dda直线绘制算法
- 使用GDI绘制直线
- 绘制连续的直线
- 直线的绘制
- 直线绘制算法
- 【VC++】001绘制直线
- LeetCode-27. Remove Element
- 使用线程来实现一个时间倒计时
- 读书笔记_MySQL必知必会
- 《kubernetes-1.8.0》15-addon-vSphere Cloud Provider
- LintCode-第一题:A+B problem (不用“+”等运算符)(位运算实现加法)
- Windows程序设计:直线绘制
- linux下yum使用本地光盘做为安装源
- 【Hive】hive-2.1.1内嵌模式安装配置全过程
- 集合类
- python数据类型
- python 3 爬虫获取可用ip地址(小白)
- Centos装MySQL5.6
- Linux学习7:文件系统操作与磁盘管理
- Spark Streaming: 保存上一个批次数据的计算结果