画直线和曲线

MoveTo设定当前位置
LineTo 从当前位置画一条直线到指定位置
PolyLine 将一系列的点用线段连接起来
PolyLineTo 从当前位置开始将一系列的点用线段连接起来,并将当前位置移动到折线的终点。
Arc 画一个圆弧
ArcTo 画一个圆弧并将当前位置移动到弧的终点
PolyBezier 画一条或多条贝塞尔样式曲线
PolyBezierTo 画一条或多条贝塞尔样式曲线,并将当前位置移动到最后一条曲线的终点
PolyDraw 通过一组点画一系列线段和贝塞尔曲线,并将当前位置一道最后一个线段或曲线的终点。
 
       pDC->MoveTo(20,20);
       pDC->LineTo(20,40);
       pDC->LineTo(40,40);
       pDC->LineTo(40,20);
       pDC->LineTo(20,20);
 
POINT aPoint[5]={50,30,60,72,46,67,74,23,24,67};
       dc.PolylineTo(aPoint,5);
 
 
       POINT aPoint1[4]={120,100,120,200,250,150,500,40};
       POINT aPoint2[4]={120,100,50,350,250,200,500,40};
       dc.PolyBezier(aPoint1,4);
       dc.PolyBezier(aPoint2,4);
 
//无边框的矩形
       dc.FillSolidRect(0,0,10,10,RGB(190,190,190));
       dc.FillSolidRect(10,0,20,10,RGB(190,190,190));
 
Chord 画一个由直线和椭圆相交后围成的封闭图形
//0,0,200,200 直线 0,0,200,200 椭圆所在区域
       dc.Chord(0,0,200,200,0,0,200,200);
 
 
获得椭圆指定角度的坐标
POINT CMfctestView::GetArcPoint(LPCRECT lpRect, double angle)
{
       long a = abs((lpRect->right-lpRect->left)/2);
       long b = abs((lpRect->bottom-lpRect->top)/2);
       double radio;
      POINT pt;
       radio=(a*b)*1.0/sqrt((sin(angle)*sin(angle))*(a*a)+(cos(angle)*cos(angle))*(b*b));
       long dx,dy;
       double ax=cos(angle*(3.1415926/180));
       double ay=sin(angle*(3.1415926/180));
       dx=(long)(radio*ax);
       dy=(long)(radio*ay);
       pt.x=lpRect->left+a+dx;
       pt.y=lpRect->top+b+dy;
      return pt;
}
使用
       CRect rcs(0,0,500,300);
       dc.Arc(&rcs,GetArcPoint(&rcs,0),GetArcPoint(&rcs,270));
Ellipse 画一个圆或椭圆
Pie 画一个饼状的楔形物
dc.Pie(&rcs,GetArcPoint(&rcs,0),GetArcPoint(&rcs,270));
 
Polygon 连接一组点形成一个多边形
 
//画一个6边形
       POINT aPoint[6]={200,200,500,200,500,300,400,300,400,500,200,500};
       dc.Polygon(aPoint,6);
//画一个灰色的6边形
CRgn cr;
       cr.CreatePolygonRgn(aPoint,6,ALTERNATE);
       CBrush mbrush(RGB(192,192,192));
       dc.FillRgn(&cr,&mbrush);
 
Rectangle 画一个带直角的矩形
 
RoundRect 画一个带圆角的矩形
POINT pt;
       pt.x=20;
       pt.y=20;
       dc.RoundRect(&rcs,pt);
SetViewportOrg 设置坐标原点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值