这是一个画弧问题;知道圆弧圆心坐标:x,y半径:r,圆弧的起始角度a,终止角度b.
用CDC的AngleArc函数来画,可我画出来就是不对,郁闷...... double X = x + r * cos(a);
double Y = y + y * sin(a);
pDC->MoveTo(X,Y);
pDC->AngleArc(x,y,r,startangle,(b - a));
用CDC的AngleArc函数来画,可我画出来就是不对,郁闷...... double X = x + r * cos(a);
double Y = y + y * sin(a);
pDC->MoveTo(X,Y);
pDC->AngleArc(x,y,r,startangle,(b - a));
解决方案 »
- 改变CTree中某一项的颜色
- 用WTL写一个MDI , 点击new菜单,会新建一个主窗体...................................解决立即送100分
- 我用LoadLibrary加载一个动态的DLL.最后FreeLibrary释放不了,当在这一句上,为何啊?
- 做软件功能演示,用什么软件呢
- 用mfc写一个控件, 里面有个CMyDialog继承了CDialog, CMyDialog里设了一个定时器,每隔2秒刷新对话框,但是cpu占有率太高? 给300, 不够
- 将C++ Builder的程序改为vc,有什么捷径可走么?
- 关于改变鼠标图标的问题
- vc访问access2000的错误“该集合中没有此项目”<===AfxGetModuleState()->m_dwVersion=0x0601;
- 如何改变CListView的显示字体???
- 谁有WINAPI函数大全及c语言库函数的资料(先来先得分)
- BMP--->word文档
- WM_PAIN 消息对窗口的刷新,是不是只对窗口的客户区而效?
double X = x + r * cos(a);
double Y = y + y * sin(a);
pDC->MoveTo(X,Y);
float rA,rB,rStartangle;
rA=a*180/3.1415926;
rB=b*180/3.1415926;
rStartangle=startangle*180/3.1415925;
pDC->AngleArc(x,y,r,startangle,(rB - rA));
double Y = y + y * sin(a); //r*sin(a)
原始参数都是角度
double X = x + r * cos(a*3.1415926535/180);
double Y = y + r * sin(a*3.1415926535/180);
pDC->MoveTo(X,Y);
pDC->AngleArc(x,y,r,a,(b - a));
以上写法对不对?如果对请看下面代码
double X = 300 + 200 * cos(90*3.1415926535/180);
double Y = 300 + 200 * sin(90*3.1415926535/180);
pDC->MoveTo(X,Y);
pDC->AngleArc(300,300,200,90,(270 - 90));
可画出来是一个封闭的半圆,为何是封闭的?
double X = 300 + 200 * cos(90*3.1415926535/180);
double Y = 300 - 200 * sin(90*3.1415926535/180);
pDC->MoveTo(X,Y);
pDC->AngleArc(300,300,200,90,(270 - 90));
double Y = 300 - 200 * sin(90*3.1415926535/180);
pDC->MoveTo(X,Y);
pDC->AngleArc(300,300,200,90,(270 - 90));
如此是正确的,但我用的坐标模式是MM_LOMETRIC,再请看下面代码:void CTestviewView::OnDraw(CDC* pDC)
{
CTestviewDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect clientRect;
GetClientRect(clientRect);
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetViewportOrg(0,clientRect.bottom);
double pi = 3.1415926535;
double x;
double y;
x = 300 + 200 * cos(pi*315/180);
y = 300 - 200 * sin(pi*315/180);
pDC->MoveTo(x,y);
pDC->AngleArc(300,300,200,315,(90-315));
}
画出来的图形不对!
我的原意是从第四象限的对角线开始画弧,逆时针画,画到y轴终止。以上写法对不对?
我的理解:画弧都是逆时针画,起始角和终止角都为正,终止角可以小于起始角。不知这样理解对不对