有什么办法画出直径5的实心圆?解决思路
有什么办法画出直径5的实心圆?
Ellipse画出来怎么是方形的?
------解决方案--------------------
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
CBrush * pOldBrush = pDC->SelectObject( &brush );
pDC->Ellipse( 0, 0, 100, 100 );
pDC->SelectObject( pOldBrush );
------解决方案--------------------
Ellipse画出来的是椭圆,但如果外面使用的正方形,那么画出来的就是一个圆,但需要填充。
------解决方案--------------------
brush画刷填充下闭合区域。
Ellipse可以画出来长轴短轴不同或者相同数据的椭圆。
长轴短轴相等就是圆
------解决方案--------------------
pDC- >Ellipse( 0, 0, 100, 100 );
四个参数分别是矩形的左上角顶点坐标和右下角顶点坐标,要想画圆保存矩形是正方形就可以了
要画实心圆定义一个实心画刷就行了:
下面的函数point 当前鼠标,mSize半径跟踪鼠标画圆
//画圆
void CMyPaintView::MDrawRedArc(CPoint point, int mSize)
{
//AfxMessageBox("");
CPoint mPoint;
mPoint.x=point.x-2;
mPoint.y=point.y-2;
CPen pNewPen;
CPen *pOldPen;
pNewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen = pDLMemDC.SelectObject(&pNewPen);
//定义画刷填充圆
CBrush fillbrush;
CBrush *oldbrush;
fillbrush.CreateSolidBrush(RGB(255,0,0));
oldbrush=pDLMemDC.SelectObject(&fillbrush);
pDLMemDC.Ellipse(mPoint.x,mPoint.y,mPoint.x+mSize,mPoint.y+mSize);
pDLMemDC.SelectObject(oldbrush);
pDLMemDC.SelectObject(pOldPen);
fillbrush.DeleteObject();
pNewPen.DeleteObject();
}
------解决方案--------------------
//画实心圆
void CMyPaintView::MDrawRedArc(CPoint point, int mSize)
{
CPoint tmppoint;
tmppoint.x=point.x-2;
tmppoint.y=point.y-2;
CPen pNewPen;
CPen *pOldPen;
pNewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen = pDLMemDC.SelectObject(&pNewPen);
//定义画刷填充圆
CBrush fillbrush;
CBrush *oldbrush;
fillbrush.CreateSolidBrush(RGB(255,0,0));
oldbrush=pDLMemDC.SelectObject(&fillbrush);
pDLMemDC.Ellipse(tmppoint.x,tmppoint.y,tmppoint.x+mSize,tmppoint.y+mSize);
pDLMemDC.SelectObject(oldbrush);
pDLMemDC.SelectObject(pOldPen);
fillbrush.DeleteObject();
pNewPen.DeleteObject();
}
Ellipse画出来怎么是方形的?
------解决方案--------------------
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
CBrush * pOldBrush = pDC->SelectObject( &brush );
pDC->Ellipse( 0, 0, 100, 100 );
pDC->SelectObject( pOldBrush );
------解决方案--------------------
Ellipse画出来的是椭圆,但如果外面使用的正方形,那么画出来的就是一个圆,但需要填充。
------解决方案--------------------
brush画刷填充下闭合区域。
Ellipse可以画出来长轴短轴不同或者相同数据的椭圆。
长轴短轴相等就是圆
------解决方案--------------------
pDC- >Ellipse( 0, 0, 100, 100 );
四个参数分别是矩形的左上角顶点坐标和右下角顶点坐标,要想画圆保存矩形是正方形就可以了
要画实心圆定义一个实心画刷就行了:
下面的函数point 当前鼠标,mSize半径跟踪鼠标画圆
//画圆
void CMyPaintView::MDrawRedArc(CPoint point, int mSize)
{
//AfxMessageBox("");
CPoint mPoint;
mPoint.x=point.x-2;
mPoint.y=point.y-2;
CPen pNewPen;
CPen *pOldPen;
pNewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen = pDLMemDC.SelectObject(&pNewPen);
//定义画刷填充圆
CBrush fillbrush;
CBrush *oldbrush;
fillbrush.CreateSolidBrush(RGB(255,0,0));
oldbrush=pDLMemDC.SelectObject(&fillbrush);
pDLMemDC.Ellipse(mPoint.x,mPoint.y,mPoint.x+mSize,mPoint.y+mSize);
pDLMemDC.SelectObject(oldbrush);
pDLMemDC.SelectObject(pOldPen);
fillbrush.DeleteObject();
pNewPen.DeleteObject();
}
------解决方案--------------------
//画实心圆
void CMyPaintView::MDrawRedArc(CPoint point, int mSize)
{
CPoint tmppoint;
tmppoint.x=point.x-2;
tmppoint.y=point.y-2;
CPen pNewPen;
CPen *pOldPen;
pNewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen = pDLMemDC.SelectObject(&pNewPen);
//定义画刷填充圆
CBrush fillbrush;
CBrush *oldbrush;
fillbrush.CreateSolidBrush(RGB(255,0,0));
oldbrush=pDLMemDC.SelectObject(&fillbrush);
pDLMemDC.Ellipse(tmppoint.x,tmppoint.y,tmppoint.x+mSize,tmppoint.y+mSize);
pDLMemDC.SelectObject(oldbrush);
pDLMemDC.SelectObject(pOldPen);
fillbrush.DeleteObject();
pNewPen.DeleteObject();
}