dc.SetROP2(R2_NOTXORPEN); dc.SelectStockObject(5); int length_1 = m_PointEnd.y - m_PointBegin.y; if (m_PointEnd.x < m_PointBegin.x) { m_PointEnd.x = m_PointBegin.x - abs(length_1); } else { m_PointEnd.x = m_PointBegin.x + abs(length_1); } CRect rectP1(m_PointBegin, m_PointEnd); dc.Ellipse(rectP1); int length_2 = point.y - m_PointBegin.y; if (point.x < m_PointBegin.x) { point.x = m_PointBegin.x - abs(length_2); } else { point.x = m_PointBegin.x + abs(length_2); } m_PointEnd.y = point.y; CRect rectP2(m_PointBegin, point); dc.Ellipse(rectP2); m_PointEnd = point;这段代码的作用
时间: 2024-02-19 20:01:29 浏览: 87
text-in-image.zip_delphi image_in
这段代码的作用是在 MFC 框架下绘制两个椭圆。具体实现过程如下:
1. 设置设备环境 dc 的 ROP2 为 NOTXORPEN,表示使用异或方式绘制图形(即如果像素点原来是黑色,则变为白色;如果原来是白色,则变为黑色)。
2. 选择设备环境 dc 的第 5 个系统画刷(SelectStockObject(5)),即选择白色画刷。
3. 计算第一个椭圆的矩形区域 rectP1。矩形区域的左上角为 m_PointBegin,右下角为 m_PointEnd。其中,m_PointBegin 是起点,m_PointEnd 是终点,length_1 表示两点之间的垂直距离。
4. 在设备环境 dc 中绘制第一个椭圆,形状为矩形区域 rectP1。
5. 计算第二个椭圆的矩形区域 rectP2。矩形区域的左上角为 m_PointBegin,右下角为 point。其中,point 是鼠标当前所在点的坐标,length_2 表示鼠标点与起点之间的垂直距离。
6. 在设备环境 dc 中绘制第二个椭圆,形状为矩形区域 rectP2。
7. 更新 m_PointEnd 的值为 point,以便继续画下一个椭圆。
总体来说,这段代码实现了一个简单的交互式绘图功能,通过鼠标的移动绘制出了一个由多个椭圆组成的图形。
阅读全文