早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用MFC做了一个椭圆时钟程序,指针为什么会随着椭圆形状而边走改变?比如画秒针时用了语句:pDC->LineTo(CenterX+(int)((double)CenterX*4/5*sin(radius)),CenterY-(int)((double)CenterY*4/5*cos(radius)));我知道因为我

题目详情
用MFC做了一个椭圆时钟程序,指针为什么会随着椭圆形状而边走改变?
比如画秒针时用了语句:pDC->LineTo(CenterX+(int)((double)CenterX*4/5*sin(radius)),CenterY-(int)((double)CenterY*4/5*cos(radius))); 我知道因为我是以客户区大小尺寸作为比例画出指针,客户区变的话椭圆大小也会随之改变.但是理论上当我不改变客户区大小时,CenterX*4/5和CenterY*4/5可以说是定值,就如同我试验时把它们设为100,秒针就转动时长度不变为100,但事实上它们却是随着椭圆的形状在变化.
此外,椭圆钟的刻度和圆形钟的刻度那个角度变化是一样的么,我发现单位角度(如画钟点时)radius=(double)i*2*3.14/12.0 这样写在圆形时钟和椭圆时钟里都是能很好的分布显示的,但就是有点想不通.
我是先画的椭圆钟面再画钟点,如下:
radius = (double)i*2*pi/12.0;//计算钟点放置的位置
x = CenterX - (size.cx/2) + (int)((double)(CenterX - 20)*sin(radius));
y = CenterY - (size.cy/2) - (int)((double)(CenterY - 20)*cos(radius));
//绘制钟点
pDC->TextOut(x,y,str);
▼优质解答
答案和解析
因为CenterX和CenterY不相等.
如果指针需要定长,那么应该先计算一个固定长度,比如x、y取比较小的值然后乘以4/5,将这个值赋给secLength.然后x和y轴坐标都用这个secLength来计算秒针LineTo坐标就ok了.
看了 用MFC做了一个椭圆时钟程序...的网友还看了以下:

屋子里指南针会偏移方向,为什么?有一次偶然发现,在屋子里在不同的地方指南针会发生偏移,甚者在同一的  2020-04-26 …

设时钟的时针在2点到3点之间,(1)时针和分针什么时候会重合?(2)何时两针在彼此的反向延长线上?  2020-05-02 …

回形针是怎么做的一根细铁细做成回形针的过程是什么?也就是说它用什么样的机器用什么方法做的?怎么生产  2020-06-08 …

求手钩拖鞋的教程啊,拖鞋鞋面那部分看不懂,什么一针钩出两针,什么隔一针不钩,我没钩针基础看不明白,  2020-06-20 …

美国某教会建造了一座尖顶的教堂,主教请当地一位工程师为其设计避雷针。工程师揶揄地说:“教堂是天国驻  2020-07-11 …

美国某教会建造了一座尖顶的教堂,主教请当地一位工程师为其设计避雷针,工程师说:“教堂是天国驻人间的  2020-07-22 …

针对路程时间和速度来列出等式,设速度一直是每小时60KM,列出式子:S=60T,我们说T为自变量,  2020-07-25 …

电磁感应一根长直铜导线在靠近一个原来静止的小磁针的过程中会切割磁感线产生感应电流(假设电路闭合)这  2020-07-26 …

(1)请同学们用磁铁靠近指南针,看看指南针会发生什么样的现象?为什么?(2)用铁靠近指南针又会怎么样  2020-11-01 …

秒针分针两次重合时间间隔为何不是恰好61秒秒针到达十二时,分针会往前一格,还是秒针走时分针也会走?  2020-11-25 …