MFC在图片控件上选择用户绘制的矩形

时间:2013-08-01 14:31:37

标签: mfc

我正在尝试创建一个允许用户在图片控件框上绘制矩形的界面。我有一个图片控件类,并使用CRectTracker允许用户绘制一个矩形。我希望用户也能够选择以前绘制的矩形,但我不知道如何处理绘制矩形的选择。 我希望能够选择矩形并在其上添加调整大小处理程序。

这是我绘制矩形的代码。

void PictureCtrl :: OnLButtonDown(UINT nFlags,CPoint point) {

// If mouse click is outside of rectangle
if(m_drawRect.m_tracker.HitTest(point) < 0 ) {
    if(m_drawRect.m_tracker.TrackRubberBand(this, point, TRUE)) {
        CDC* pDC = GetDC();

        m_drawRect.m_tracker.m_nStyle &= CRectTracker::resizeInside;


        // Paint transparent rectangle
        pDC->SelectStockObject(NULL_BRUSH);
        pDC->Rectangle(m_drawRect.m_tracker.m_rect);

        ReleaseDC(pDC);


    }
} 

CStatic::OnLButtonDown(nFlags, point);

}

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在班级中存储矩形的坐标(同时保存/加载)并在鼠标按下期间执行HitTest

要实现调整大小句柄,您需要一个布尔值来表示选择矩形(如果单击不在矩形上,则将布尔值设置为FALSE)并在绘制期间绘制抓取句柄(如果布尔值为TRUE);如果鼠标在抓握手柄上移动,请更改鼠标光标,在此情况下,在鼠标按下和鼠标按下时执行调整大小。

如果你有一个以上的矩形,这一切都非常复杂并且变得更加复杂! 这是一个DrawCLI MSDN example,它使用矩形,圆角矩形,椭圆,直线和折线以及对OLE的支持来完成所有这些 - 也许这会有所帮助,在它处于状态之前从DrawCLI删除类/函数可能更容易与您的申请合并......