本文整理汇总了C++中CDisplay::GetDC方法的典型用法代码示例。如果您正苦于以下问题:C++ CDisplay::GetDC方法的具体用法?C++ CDisplay::GetDC怎么用?C++ CDisplay::GetDC使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDisplay
的用法示例。
在下文中一共展示了CDisplay::GetDC方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnLButtonDown
void CPointTool::OnLButtonDown(_CVIEW * pView, UINT nFlags, CPoint& point)
{
CMiniCADDoc* pDoc = pView->GetDocument();
if (pDoc==NULL)return;
CADGraphics *pGraphics = &pDoc->m_Graphics;
CDisplay *pDisplay = pGraphics->m_pDisplay;
if (pDisplay == NULL) return;
CADPoint* pPoint;
pPoint=new CADPoint();
ADPOINT adPoint=pDoc->m_Graphics.ClientToDoc(point);
pPoint->pt=adPoint;
pPoint->m_nLayer=pDoc->m_LayerGroup.indexOf(pDoc->m_curLayer);
pDoc->m_Graphics.m_Entities.Add((CObject*)pPoint);
pDoc->m_Graphics.DrawGraphics(pDisplay->GetDC(),pPoint);
pView->ReBitBlt();
CDrawTool::OnLButtonDown(pView, nFlags, point);
}
示例2: OnLButtonUp
void CPanTool::OnLButtonUp(_CVIEW* pView, UINT nFlags, CPoint& point)
{
CMiniCADDoc* pDoc = pView->GetDocument();
if (pDoc==NULL)return;
CADGraphics *pGraphics = &pDoc->m_Graphics;
CDisplay *pDisplay = pGraphics->m_pDisplay;
if (pDisplay == NULL) return;
double ddx,ddy;
int dx,dy;
dx = point.x - c_PtDown.x;
dy = point.y - c_PtDown.y;
if (pView->m_curWorkSpace==MODELSPACE)
{
ddx = dx/pDoc->m_Graphics.m_ZoomRate;
ddy = dy/pDoc->m_Graphics.m_ZoomRate;
pDoc->m_Graphics.m_Bound.Offset(-ddx,-ddy);
pView->ReDraw();
}
else
{
CDC* pPaperDC=pDisplay->GetPaperDC();
ddx = dx/pDoc->m_Graphics.m_ZoomRate;
ddy = dy/pDoc->m_Graphics.m_ZoomRate;
pDoc->m_Graphics.m_Bound.Offset(-ddx,-ddy);
CPoint point1;
point1 = pDoc->m_Graphics.DocToClient(pView->m_RotatePt);
pDoc->m_Graphics.RotateAll(pDisplay->GetDC(),point1,-(int)pDoc->m_Graphics.m_RotateAngle);
//pDoc->m_Graphics.DrawGraphics(m_pDisplay->GetDC());
pPaperDC->BitBlt(pView->m_ModelRect.left,pView->m_ModelRect.top,pView->m_ModelRect.Width(),pView->m_ModelRect.Height(),pDisplay->GetDC(),0,0,SRCCOPY);
pView->Invalidate(false);
}
CDrawTool::OnLButtonUp(pView, nFlags, point);
}
示例3: OnLButtonDown
void CRectTool::OnLButtonDown(_CVIEW * pView, UINT nFlags, CPoint& point)
{
CDC* pDC = NULL;
pDC = pView->GetDC();
if (pDC == NULL) return;
CMiniCADDoc* pDoc = pView->GetDocument();
if (pDoc==NULL)return;
CADGraphics *pGraphics = &pDoc->m_Graphics;
CDisplay *pDisplay = pGraphics->m_pDisplay;
if (pDisplay == NULL) return;
if (c_nDown==0)
{
/// c_PtDown=point;
CPen Pen;
if (!Pen.CreatePen(PS_SOLID, 1, RGB(255,255,255)))
return;
CPen* pOldPen = pDC->SelectObject(&Pen);
LOGBRUSH logBrush;
logBrush.lbColor = 0;
logBrush.lbHatch = 0;
logBrush.lbStyle = BS_NULL;
CBrush NullBrush;
NullBrush.CreateBrushIndirect(&logBrush);
CBrush* pOldBrush = pDC->SelectObject(&NullBrush);
int oldDrawMode = pDC->SetROP2(R2_XORPEN);
pView->m_pTempEntity=new CADPolyline();
CADPolyline* pPolyline=(CADPolyline*)pView->m_pTempEntity;
pView->SetProjectLineWidth(pPolyline);
pPolyline->m_nLayer=pDoc->m_LayerGroup.indexOf(pDoc->m_curLayer);
pPolyline->m_Closed=true;
if(c_bSnap && pDoc->m_Graphics.m_bHaveSnap)
{
ADPOINT* pPoint=new ADPOINT();
*pPoint = pDoc->m_Graphics.m_curSnapP;
pPolyline->m_Point.Add((CObject*)pPoint);
c_PtDown = pDoc->m_Graphics.DocToClient(pDoc->m_Graphics.m_curSnapP);
c_PtOld = point;
} else
{
ADPOINT* pPoint=new ADPOINT();
*pPoint = pDoc->m_Graphics.ClientToDoc(point);
pPolyline->m_Point.Add((CObject*)pPoint);
c_PtDown = point;
c_PtOld = point;
}
pDC->Rectangle(point.x,point.y,point.x,point.y);
pDC->SetROP2(oldDrawMode);
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
Pen.DeleteObject();
}
if (c_nDown<2)
c_nDown++;
if (c_nDown==2)
{
c_nDown=0;
ADPOINT adPoint;
if (c_bSnap && pDoc->m_Graphics.m_bHaveSnap)
{
adPoint=pDoc->m_Graphics.m_curSnapP;
} else
{
adPoint=pDoc->m_Graphics.ClientToDoc(point);
}
CADPolyline* pPolyline=(CADPolyline*)pView->m_pTempEntity;
ADPOINT* pPoint1=(ADPOINT*)pPolyline->m_Point.GetAt(0);
ADPOINT* pPoint=new ADPOINT();
pPoint->x = adPoint.x;
pPoint->y = pPoint1->y;
pPolyline->m_Point.Add((CObject*)pPoint);
pPoint=new ADPOINT();
*pPoint = adPoint;
pPolyline->m_Point.Add((CObject*)pPoint);
pPoint=new ADPOINT();
pPoint->x = pPoint1->x;
pPoint->y = adPoint.y;
pPolyline->m_Point.Add((CObject*)pPoint);
pDoc->m_Graphics.m_Entities.Add((CObject*)pPolyline);
pDoc->m_Graphics.DrawGraphics(pDisplay->GetDC(),pView->m_pTempEntity);
pView->m_pTempEntity=NULL;
pView->ReBitBlt();
}
DeleteDC(pDC->m_hDC);
//CDrawTool::OnLButtonDown(pView, nFlags, point);
}
示例4: OnMouseMove
void CPanTool::OnMouseMove(_CVIEW* pView, UINT nFlags, CPoint& point)
{
::SetCursor(AfxGetApp()->LoadCursor(IDC_PAN));
CDC* pDC = NULL;
pDC = pView->GetDC();
if (pDC == NULL) return;
CMiniCADDoc* pDoc = pView->GetDocument();
if (pDoc==NULL)return;
CADGraphics *pGraphics = &pDoc->m_Graphics;
CDisplay *pDisplay = pGraphics->m_pDisplay;
if (pDisplay == NULL) return;
if (!c_bDown)
{
DeleteDC(pDC->m_hDC);
return;
}
::SetCursor(AfxGetApp()->LoadCursor(IDC_PANDOWN));
double ddx,ddy;
int dx,dy;
dx=point.x-c_PtOld.x;
dy=point.y-c_PtOld.y;
ddx=dx/pDoc->m_Graphics.m_ZoomRate;
ddy=dy/pDoc->m_Graphics.m_ZoomRate;
int cx = point.x - c_PtDown.x;
int cy = point.y - c_PtDown.y;
CBrush brush;
brush.CreateSolidBrush(pDoc->m_Graphics.m_BKColor);
CRect rect;
CRect rect2;
pView->GetClientRect(rect);
if(pView->m_curWorkSpace==MODELSPACE)
{
if (cx>0)
rect2.SetRect(0,0,cx,rect.Height());
else
rect2.SetRect(rect.Width()+cx,0,rect.Width(),rect.Height());
pDC->FillRect(&rect2, &brush);
if (cy>0)
rect2.SetRect(0,0,rect.Width(),cy-1);
else
rect2.SetRect(0,rect.Height()+cy,rect.Width(),rect.Height());
pDC->FillRect(&rect2, &brush);
pDC->BitBlt(cx,cy,rect.Width(),rect.Height(),pDisplay->GetDC(),0,0,SRCCOPY);
}
else
{
CRect moveRect=pView->m_ModelRect;
CDC* pPaperDC=pDisplay->GetPaperDC();
int xOffset=0;
int yOffset=0;
if (cx>0)
{
if(cx>pView->m_ModelRect.Width())cx=pView->m_ModelRect.Width();
rect2.SetRect(pView->m_ModelRect.left,pView->m_ModelRect.top,pView->m_ModelRect.left+cx,pView->m_ModelRect.top+pView->m_ModelRect.Height());
moveRect.left+=cx;
}
else
{
if(cx<-pView->m_ModelRect.Width())cx=-pView->m_ModelRect.Width();
rect2.SetRect(pView->m_ModelRect.left+pView->m_ModelRect.Width()+cx,pView->m_ModelRect.top,pView->m_ModelRect.left+pView->m_ModelRect.Width(),pView->m_ModelRect.top+pView->m_ModelRect.Height());
moveRect.right+=cx;
xOffset-=cx;
}
pPaperDC->FillRect(&rect2, &brush);
if (cy>0)
{
if(cy>pView->m_ModelRect.Height())cy=pView->m_ModelRect.Height();
rect2.SetRect(pView->m_ModelRect.left,pView->m_ModelRect.top,pView->m_ModelRect.left+pView->m_ModelRect.Width(),pView->m_ModelRect.top+cy);
moveRect.top+=cy;
}
else
{
if(cy<-pView->m_ModelRect.Height())cy=-pView->m_ModelRect.Height();
rect2.SetRect(pView->m_ModelRect.left,pView->m_ModelRect.top+pView->m_ModelRect.Height()+cy,pView->m_ModelRect.left+pView->m_ModelRect.Width(),pView->m_ModelRect.top+pView->m_ModelRect.Height());
moveRect.bottom+=cy;
yOffset-=cy;
}
pPaperDC->FillRect(&rect2, &brush);
pPaperDC->BitBlt(moveRect.left,moveRect.top,moveRect.Width(),moveRect.Height(),pDisplay->GetDC(),xOffset,yOffset,SRCCOPY);
pView->Invalidate(false);
}
brush.DeleteObject();
DeleteDC(pDC->m_hDC);
CDrawTool::OnMouseMove(pView, nFlags, point);
}