📄 bufferview.cpp
字号:
void CBufferView::Polygon(CDC* pDC, POINT* lpPoints,int nCount)
{
for (int i=1;i<nCount;i++)
{
Line(pDC,*(lpPoints+i-1),*(lpPoints+i));
}
Line(pDC,*(lpPoints+i-1),*lpPoints);
}
void CBufferView::Polygon(CDC* pDC, LINE* lines,int nCount)
{
for (int i=0;i<nCount;i++)
Line(pDC,*(lines+i));
}
void CBufferView::OnBufferPolygon()
{
// TODO: Add your command handler code here
RemoveAllOverlap();
m_buffer=TRUE;
m_overlap=FALSE;
m_LBotton_point=FALSE;
m_LBotton_line=FALSE;
m_LBotton_polygon=TRUE;
if (m_points_point.GetSize()!=0)
m_points_point.RemoveAll();
if(m_bufferline.GetSize()!=0)
m_bufferline.RemoveAll();
Invalidate(true);
}
void CBufferView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC *pDC=GetDC();
LINE lTemp;
if (m_buffer)
{
if(m_LBotton_line)
{
i=0;
m_points_line.RemoveAll();
}
if(m_LBotton_polygon)
{
if (i!=0)
{
lTemp.pStart=point;
lTemp.pEnd=pStart;
m_bufferpolygon.Add(lTemp);
Line(pDC,lTemp);
m_points_line.RemoveAll();
}
i=0;
}
}
if (m_overlap)
{
if (m_o_pDrawPoly)
{
if (m_lBDown!=0)
{
p_polygon.DeleteObject();
m_overlap_ppoly.Add(point);
Polygon(pDC,m_overlap_ppoly.GetData(),m_overlap_ppoly.GetSize());
p_polygon.CreatePolygonRgn(m_overlap_ppoly.GetData(),m_overlap_ppoly.GetSize(),ALTERNATE);
m_lBDown=0;
}
}
if (drawpolyA)
{
if (m_lBDown!=0)
{
p_polyA.DeleteObject();
m_overlap_polyA.Add(point);
Polygon(pDC,m_overlap_polyA.GetData(),m_overlap_polyA.GetSize());
p_polyA.CreatePolygonRgn(m_overlap_polyA.GetData(),m_overlap_polyA.GetSize(),ALTERNATE);
m_lBDown=0;
}
}
if (drawpolyB)
{
if (m_lBDown!=0)
{
p_polyB.DeleteObject();
m_overlap_polyB.Add(point);
Polygon(pDC,m_overlap_polyB.GetData(),m_overlap_polyB.GetSize());
p_polyB.CreatePolygonRgn(m_overlap_polyB.GetData(),m_overlap_polyB.GetSize(),ALTERNATE);
m_lBDown=0;
}
}
if (drawline)
{
m_lBDown=0;
}
if (drawpoly)
{
if (m_lBDown!=0)
{
LINE l;
m_overlap_Lpoints.Add(point);
l.pStart=m_overlap_Lpoints[m_overlap_Lpoints.GetSize()-1];
l.pEnd=m_overlap_Lpoints[0];
m_poly.Add(l);
Line(pDC,l);
m_lBDown=0;
}
}
}
CScrollView::OnRButtonDown(nFlags, point);
}
void CBufferView::OnPbufferCreated()
{
// TODO: Add your command handler code here
CBUFFERDlg dlg;
if (dlg.DoModal()==IDOK)
{
buffer_rad=dlg.m_buffer;
}
m_BufferOperation=BufferPoint;
Invalidate(true);
}
void CBufferView::OnLbufferCreated()
{
// TODO: Add your command handler code here
CBUFFERDlg dlg;
if (dlg.DoModal()==IDOK)
{
buffer_rad=dlg.m_buffer;
}
m_BufferOperation=BufferLine;
Invalidate(true);
}
void CBufferView::OnGbufferCreated()
{
// TODO: Add your command handler code here
CBUFFERDlg dlg;
if (dlg.DoModal()==IDOK)
{
buffer_rad=dlg.m_buffer;
}
m_BufferOperation=BufferPolygon;
Invalidate(true);
}
void CBufferView::OnOverlapPoint() //点面叠加画点
{
RemoveAllBuffer();
if (m_overlap_polyA.GetSize()!=0||m_overlap_polyB.GetSize()!=0)
{
m_overlap_polyA.RemoveAll();
m_overlap_polyB.RemoveAll();
}
if (m_line.GetSize()!=0||m_poly.GetSize()!=0)
{
m_line.RemoveAll();
m_poly.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=TRUE;
m_o_pDrawPoly=FALSE;
drawpolyA=FALSE;
drawpolyB=FALSE;
drawline=FALSE;
drawpoly=FALSE;
pp_created=FALSE;
Invalidate(true);
}
void CBufferView::OnOVERLAPPPoly() //点面叠加画面
{
RemoveAllBuffer();
if (m_overlap_polyA.GetSize()!=0||m_overlap_polyB.GetSize()!=0)
{
m_overlap_polyA.RemoveAll();
m_overlap_polyB.RemoveAll();
}
if (m_line.GetSize()!=0||m_poly.GetSize()!=0)
{
m_line.RemoveAll();
m_poly.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=FALSE;
m_o_pDrawPoly=TRUE;
drawpolyA=FALSE;
drawpolyB=FALSE;
drawline=FALSE;
drawpoly=FALSE;
pp_created=FALSE;
Invalidate(true);
}
void CBufferView::OnOVERLAPPOverLap() //点面叠加
{
pp_created=TRUE;
Invalidate(true);
}
void CBufferView::OnOverlapDrawpoly1()
{
// TODO: Add your command handler code here
RemoveAllBuffer();
if (m_overlap_ppoints.GetSize()!=0||m_overlap_ppoly.GetSize()!=0)
{
m_overlap_ppoints.RemoveAll();
m_overlap_ppoly.RemoveAll();
}
if (m_line.GetSize()!=0||m_poly.GetSize()!=0)
{
m_line.RemoveAll();
m_poly.RemoveAll();
}
if (m_overlap_polyA.GetSize()!=0)
{
m_overlap_polyA.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=FALSE;
m_o_pDrawPoly=FALSE;
drawpolyA=TRUE;
drawpolyB=FALSE;
over_union=FALSE;
over_insert=FALSE;
over_difference=FALSE;
drawline=FALSE;
drawpoly=FALSE;
Invalidate(true);
}
void CBufferView::OnOverlapDrawpoly2()
{
// TODO: Add your command handler code here
RemoveAllBuffer();
Invalidate(true);
if (m_overlap_ppoints.GetSize()!=0||m_overlap_ppoly.GetSize()!=0)
{
m_overlap_ppoints.RemoveAll();
m_overlap_ppoly.RemoveAll();
}
if (m_line.GetSize()!=0||m_poly.GetSize()!=0)
{
m_line.RemoveAll();
m_poly.RemoveAll();
}
if (m_overlap_polyB.GetSize()!=0)
{
m_overlap_polyB.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=FALSE;
m_o_pDrawPoly=FALSE;
drawpolyA=FALSE;
drawpolyB=TRUE;
over_union=FALSE;
over_insert=FALSE;
over_difference=FALSE;
drawline=FALSE;
drawpoly=FALSE;
}
void CBufferView::OnOverlapUnion()
{
over_union=TRUE;
over_insert=FALSE;
over_difference=FALSE;
Invalidate(true);
}
void CBufferView::OnOverlapInsert()
{
over_union=FALSE;
over_insert=TRUE;
over_difference=FALSE;
Invalidate(true);
}
void CBufferView::OnOverlapDifference()
{
over_union=FALSE;
over_insert=FALSE;
over_difference=TRUE;
Invalidate(true);
}
//线面叠加
void CBufferView::OnOVERLAPLLine()
{
RemoveAllBuffer();
if (m_overlap_ppoints.GetSize()!=0||m_overlap_ppoly.GetSize()!=0)
{
m_overlap_ppoints.RemoveAll();
m_overlap_ppoly.RemoveAll();
}
if (m_overlap_polyA.GetSize()!=0||m_overlap_polyB.GetSize()!=0)
{
m_overlap_polyA.RemoveAll();
m_overlap_polyB.RemoveAll();
}
if (m_line.GetSize()!=0)
{
m_line.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=FALSE;
m_o_pDrawPoly=FALSE;
drawpolyA=FALSE;
drawpolyB=FALSE;
drawline=TRUE;
drawpoly=FALSE;
line_poly=FALSE;
Invalidate(true);
}
void CBufferView::OnOverlapLpoly()
{
Invalidate(true);
RemoveAllBuffer();
if (m_overlap_ppoints.GetSize()!=0||m_overlap_ppoly.GetSize()!=0)
{
m_overlap_ppoints.RemoveAll();
m_overlap_ppoly.RemoveAll();
}
if (m_overlap_polyA.GetSize()!=0||m_overlap_polyB.GetSize()!=0)
{
m_overlap_polyA.RemoveAll();
m_overlap_polyB.RemoveAll();
}
if (m_poly.GetSize()!=0)
{
m_poly.RemoveAll();
}
if (m_line_result.GetSize()!=0)
{
m_line_result.RemoveAll();
}
if (m_points.GetSize()!=0)
{
m_points.RemoveAll();
}
m_overlap=TRUE;
m_buffer=FALSE;
m_o_pDrawPoint=FALSE;
m_o_pDrawPoly=FALSE;
drawpolyA=FALSE;
drawpolyB=FALSE;
drawline=FALSE;
drawpoly=TRUE;
line_poly=FALSE;
}
void CBufferView::OnOVERLAPLOverLap()
{
line_poly=TRUE;
m_line_result.RemoveAll();
CDC *pDC=GetDC();
CPen pen1(PS_SOLID,2,RGB(0,255,0));
pDC->SelectObject(&pen1);
if ((m_line.GetSize()!=0)&&(m_poly.GetSize()!=0))
{
for (int j=0;j<m_line.GetSize();j++)
{
m_points.RemoveAll();
LineRgn(pDC,m_line[j],m_poly.GetData(),m_poly.GetSize());
}
}
DeleteObject(pen1);
}
void CBufferView::RemoveAllOverlap()
{
m_overlap_ppoints.RemoveAll();
m_overlap_ppoly.RemoveAll();
m_overlap_polyA.RemoveAll();
m_overlap_polyB.RemoveAll();
m_poly.RemoveAll();
m_line.RemoveAll();
m_line_result.RemoveAll();
m_points.RemoveAll();
m_overlap_Lpoints.RemoveAll();
}
void CBufferView::RemoveAllBuffer()
{
m_points_point.RemoveAll();
m_points_line.RemoveAll();
m_bufferline.RemoveAll();
m_bufferpolygon.RemoveAll();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -