1、绘制选择框
1.1 在COCCDemoView类头文件中添加选择框对象。
Handle(AIS_RubberBand) m_SelectionRectangle;
1.2 在COCCDemoView的构造函数中初始化。
COCCDemoView::COCCDemoView()
{
m_SelectionRectangle = new AIS_RubberBand();
m_SelectionRectangle->SetLineType(Aspect_TOL_SOLID);
m_SelectionRectangle->SetLineColor(Quantity_NOC_BLACK);
}
1.3 在void COCCDemoView::OnMouseMove(UINT nFlags, CPoint point)中绘制选择框。
void COCCDemoView::OnMouseMove(UINT nFlags, CPoint point)
{
Handle(AIS_InteractiveContext) aAISContext = GetDocument()->GetAISContext();
if ((nFlags & MK_RBUTTON))
{
m_View->Pan(point.x - m_PreX, m_PreY - point.y);
m_PreX = point.x;
m_PreY = point.y;
}
else if ((nFlags & MK_MBUTTON))
{
m_View->Rotation(point.x, point.y);
}
else if(nFlags & MK_LBUTTON)
{
int winViewWidth = 0;
int winViewHeight = 0;
m_View->Window()->Size(winViewWidth, winViewHeight);
m_SelectionRectangle->SetRectangle(m_PreX, winViewHeight - m_PreY, point.x, winViewHeight- point.y);
if (aAISContext->IsDisplayed(m_SelectionRectangle))
aAISContext->Redisplay(m_SelectionRectangle, true);
else
aAISContext->Display(m_SelectionRectangle, true);
aAISContext->Select(m_PreX, m_PreY, point.x, point.y, m_View, Standard_True);
}
else
{
aAISContext->MoveTo(point.x, point.y, m_View, TRUE);
}
CView::OnMouseMove(nFlags, point);
}
1.4 在void COCCDemoView::OnLButtonUp(UINT nFlags, CPoint point)中清除选择框。
void COCCDemoView::OnLButtonUp(UINT nFlags, CPoint point)
{
Handle(AIS_InteractiveContext) aAISContext = GetDocument()->GetAISContext();
if (aAISContext->IsDisplayed(m_SelectionRectangle))
{
aAISContext->Remove(m_SelectionRectangle, true);
}
CView::OnLButtonUp(nFlags, point);
}
2、效果如图