case 5: //圆 radius = abs(p_point1.x - p_point2.x) / 2; centerX = min(p_point1.x, p_point2.x) + radius; centerY = min(p_point1.y, p_point2.y) + radius; du.Ellipse(centerX - radius, centerY - radius, centerX + radius, centerY + radius); pGraph = new P_Picture(pchoice, p_color, p_brush, p_point1, p_point2); m_ptrArray.Add(pGraph);你能否修改case5之后的代码来实现一种同样能绘画出圆的方法
时间: 2024-03-19 18:43:08 浏览: 224
当然可以,以下是一个实现绘画圆的新代码:
```cpp
case 5:
// 圆
radius = abs(p_point1.x - p_point2.x) / 2;
centerX = min(p_point1.x, p_point2.x) + radius;
centerY = min(p_point1.y, p_point2.y) + radius;
// 绘制圆的边框和内部
CBrush brush(p_color);
CBrush *oldBrush = du.SelectObject(&brush);
CPen pen(PS_SOLID, 1, p_color);
CPen *oldPen = du.SelectObject(&pen);
du.Ellipse(centerX - radius, centerY - radius, centerX + radius, centerY + radius);
du.SelectObject(oldPen);
du.SelectObject(oldBrush);
pGraph = new P_Picture(pchoice, p_color, p_brush, p_point1, p_point2);
m_ptrArray.Add(pGraph);
break;
```
在这个新代码中,我们首先创建了一个与画笔颜色相同的画笔 pen 和一个与画刷颜色相同的画刷 brush,并将它们分别选入画板中。然后,我们使用 du.Ellipse() 函数绘制圆的边框和内部。最后,我们将画刷和画笔恢复回去,否则可能会对后续的绘画产生影响。
阅读全文