mfc 绘制两点连接的线段垂直线段
时间: 2023-07-09 18:41:58 浏览: 57
您可以通过以下步骤来绘制两点连接的线段垂直线段:
1. 首先,计算出两点之间的距离和中心点坐标。
```c++
CPoint p1, p2; // 两点坐标
float distance = sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2)); // 两点距离
CPoint center((p1.x + p2.x) / 2, (p1.y + p2.y) / 2); // 中心点坐标
```
2. 然后,计算出垂直线的起点和终点坐标。
```c++
float dx = (p2.x - p1.x) / distance; // 两点连线的方向向量
float dy = (p2.y - p1.y) / distance;
float offsetX = -dy * 10; // 偏移量(这里取10,可以根据需要调整)
float offsetY = dx * 10;
CPoint start(center.x + offsetX, center.y + offsetY); // 垂直线的起点坐标
CPoint end(center.x - offsetX, center.y - offsetY); // 垂直线的终点坐标
```
3. 最后,使用CDC的LineTo方法绘制线段。
```c++
CDC* pDC = GetDC();
pDC->MoveTo(start);
pDC->LineTo(end);
ReleaseDC(pDC);
```
完整代码如下:
```c++
CPoint p1(100, 100); // 两点坐标
CPoint p2(200, 200);
float distance = sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2)); // 两点距离
CPoint center((p1.x + p2.x) / 2, (p1.y + p2.y) / 2); // 中心点坐标
float dx = (p2.x - p1.x) / distance; // 两点连线的方向向量
float dy = (p2.y - p1.y) / distance;
float offsetX = -dy * 10; // 偏移量(这里取10,可以根据需要调整)
float offsetY = dx * 10;
CPoint start(center.x + offsetX, center.y + offsetY); // 垂直线的起点坐标
CPoint end(center.x - offsetX, center.y - offsetY); // 垂直线的终点坐标
CDC* pDC = GetDC();
pDC->MoveTo(start);
pDC->LineTo(end);
ReleaseDC(pDC);
```