求助,哪位大拿帮我完成下这旋转图形 求助,哪位大拿帮我完成下这旋转图形, 不能使用图片, 就用CDC类 完成 多谢啦图形 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 硬画?这个不难吧?两个arc,5条直线,填充。如果你想让它转,计算下几个坐标即可。也可以用gdi+ #define M_PI 3.1415926 CPoint ptOrgin(200,150);//中心点 float iRadio1=50;//内圆半径 float iRadio2=70;//外圆半径 float angleV=30;//豁口角度 float angleTrangle=30;//三角形跨越角度 int iTriangleLen1=20;//三角形箭头外沿宽度 int iRadio1Span=8;//三角形箭头半径位置调整,为了好看 float angleStart1=90.0f-angleV; float angleEnd1=90.0f+angleV; float angleStart2=90.0f-angleV; float angleEnd2=90.0f+angleV; ////////////////////////////////////////////////////////////////////////// CRect rt1(ptOrgin.x-iRadio1,ptOrgin.y-iRadio1,ptOrgin.x+iRadio1,ptOrgin.y+iRadio1); CPoint ptStart1(int(ptOrgin.x-iRadio1*cos(M_PI*angleStart1/180.0f)), int(ptOrgin.y-iRadio1*sin(M_PI*angleStart1/180.0f))); CPoint ptEnd1(int(ptOrgin.x-iRadio1*cos(M_PI*angleEnd1/180.0f)), int(ptOrgin.y-iRadio1*sin(M_PI*angleEnd1/180.0f))); dc.Arc(rt1,ptStart1,ptEnd1); ////////////////////////////////////////////////////////////////////////// CRect rt2(ptOrgin.x-iRadio2,ptOrgin.y-iRadio2,ptOrgin.x+iRadio2,ptOrgin.y+iRadio2); CPoint ptStart2(int(ptOrgin.x-iRadio2*cos(M_PI*angleStart2/180.0f)), int(ptOrgin.y-iRadio2*sin(M_PI*angleStart2/180.0f))); CPoint ptEnd2(int(ptOrgin.x-iRadio2*cos(M_PI*angleEnd2/180.0f)), int(ptOrgin.y-iRadio2*sin(M_PI*angleEnd2/180.0f))); dc.Arc(rt2,ptStart2,ptEnd2); ////////////////////////////////////////////////////////////////////////// dc.MoveTo(ptEnd1); dc.LineTo(ptEnd2); ////////////////////////////////////////////////////////////////////////// float angleEnd3=angleStart1+angleTrangle; CPoint ptTriAngleP1(int(ptOrgin.x-(iRadio1-iTriangleLen1)*cos(M_PI*angleStart1/180.0f)), int(ptOrgin.y-(iRadio1-iTriangleLen1)*sin(M_PI*angleStart1/180.0f))); CPoint ptTriAngleP2(int(ptOrgin.x-(iRadio2+iTriangleLen1)*cos(M_PI*angleStart1/180.0f)), int(ptOrgin.y-(iRadio2+iTriangleLen1)*sin(M_PI*angleStart1/180.0f))); CPoint ptTriAngleP3(int(ptOrgin.x-((iRadio2+iRadio1)/2+iRadio1Span)*cos(M_PI*angleEnd3/180.0f)), int(ptOrgin.y-((iRadio2+iRadio1)/2+iRadio1Span)*sin(M_PI*angleEnd3/180.0f))); dc.MoveTo(ptStart1); dc.LineTo(ptTriAngleP1); dc.LineTo(ptTriAngleP3); dc.MoveTo(ptStart2); dc.LineTo(ptTriAngleP2); dc.LineTo(ptTriAngleP3); ////////////////////////////////////////////////////////////////////////// CPoint ptFill(int(ptOrgin.x-(iRadio2+iRadio1)/2*cos(M_PI*angleStart1/180.0f)), int(ptOrgin.y-(iRadio2+iRadio1)/2*sin(M_PI*angleStart1/180.0f))); dc.FloodFill(ptFill.x,ptFill.y,RGB(0,0,0)); ////////////////////////////////////////////////////////////////////////// 这个mscomm32.ocx控件无法导入,该咋办? mysql同时执行两条语句出错 寻用VC开发IVR系统朋友,解决几个问题报酬从优 简单的vc操作方面的知识,望指点!!! VC控件ID号 CListCtrl中item下的subitem可以是图片吗?我的为什么显示不出来? 有关映射模式的问题 用socket如何实现多点通讯(Win32 API) 对面的大哥看过来,ActiveX控件的分发问题 如何在CListCtrl中可以选中subitem? MFC多线程 线程数目 为什么ACTIVEX用买的证书签名就不会被IE拦截呢?
CPoint ptOrgin(200,150);//中心点
float iRadio1=50;//内圆半径
float iRadio2=70;//外圆半径
float angleV=30;//豁口角度
float angleTrangle=30;//三角形跨越角度
int iTriangleLen1=20;//三角形箭头外沿宽度
int iRadio1Span=8;//三角形箭头半径位置调整,为了好看
float angleStart1=90.0f-angleV;
float angleEnd1=90.0f+angleV;
float angleStart2=90.0f-angleV;
float angleEnd2=90.0f+angleV;
//////////////////////////////////////////////////////////////////////////
CRect rt1(ptOrgin.x-iRadio1,ptOrgin.y-iRadio1,ptOrgin.x+iRadio1,ptOrgin.y+iRadio1);
CPoint ptStart1(int(ptOrgin.x-iRadio1*cos(M_PI*angleStart1/180.0f)),
int(ptOrgin.y-iRadio1*sin(M_PI*angleStart1/180.0f)));
CPoint ptEnd1(int(ptOrgin.x-iRadio1*cos(M_PI*angleEnd1/180.0f)),
int(ptOrgin.y-iRadio1*sin(M_PI*angleEnd1/180.0f)));
dc.Arc(rt1,ptStart1,ptEnd1);
//////////////////////////////////////////////////////////////////////////
CRect rt2(ptOrgin.x-iRadio2,ptOrgin.y-iRadio2,ptOrgin.x+iRadio2,ptOrgin.y+iRadio2);
CPoint ptStart2(int(ptOrgin.x-iRadio2*cos(M_PI*angleStart2/180.0f)),
int(ptOrgin.y-iRadio2*sin(M_PI*angleStart2/180.0f)));
CPoint ptEnd2(int(ptOrgin.x-iRadio2*cos(M_PI*angleEnd2/180.0f)),
int(ptOrgin.y-iRadio2*sin(M_PI*angleEnd2/180.0f)));
dc.Arc(rt2,ptStart2,ptEnd2);
//////////////////////////////////////////////////////////////////////////
dc.MoveTo(ptEnd1);
dc.LineTo(ptEnd2);
//////////////////////////////////////////////////////////////////////////
float angleEnd3=angleStart1+angleTrangle;
CPoint ptTriAngleP1(int(ptOrgin.x-(iRadio1-iTriangleLen1)*cos(M_PI*angleStart1/180.0f)),
int(ptOrgin.y-(iRadio1-iTriangleLen1)*sin(M_PI*angleStart1/180.0f)));
CPoint ptTriAngleP2(int(ptOrgin.x-(iRadio2+iTriangleLen1)*cos(M_PI*angleStart1/180.0f)),
int(ptOrgin.y-(iRadio2+iTriangleLen1)*sin(M_PI*angleStart1/180.0f)));
CPoint ptTriAngleP3(int(ptOrgin.x-((iRadio2+iRadio1)/2+iRadio1Span)*cos(M_PI*angleEnd3/180.0f)),
int(ptOrgin.y-((iRadio2+iRadio1)/2+iRadio1Span)*sin(M_PI*angleEnd3/180.0f)));
dc.MoveTo(ptStart1);
dc.LineTo(ptTriAngleP1);
dc.LineTo(ptTriAngleP3);
dc.MoveTo(ptStart2);
dc.LineTo(ptTriAngleP2);
dc.LineTo(ptTriAngleP3);
//////////////////////////////////////////////////////////////////////////
CPoint ptFill(int(ptOrgin.x-(iRadio2+iRadio1)/2*cos(M_PI*angleStart1/180.0f)),
int(ptOrgin.y-(iRadio2+iRadio1)/2*sin(M_PI*angleStart1/180.0f)));
dc.FloodFill(ptFill.x,ptFill.y,RGB(0,0,0));
//////////////////////////////////////////////////////////////////////////