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

用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-06-18 …

二、读句子,根重音的不同,把左右两句中意思联系紧密的句子边起来.我知道你会唱歌你怎么说不会呢?我知  2020-06-27 …

宇宙是否有边缘我在想:霍金说宇宙现在正在膨胀,在无数年后也许会坍缩.我想那么就应该有边缘.因为如果  2020-07-05 …

我们可不可以看到宇宙边界?我们能看到蓝天边界,是因为它太大了,宇宙边界很大很大,大的不得了,我们会  2020-07-31 …

(图)蝴蝶是不是可数名词啊?为什么这个不加s呢?怎么他的是butterfly啊?既然是double,  2020-10-31 …

英语翻译每天放学在我快要到家的时候,总会看到爷爷在窗子旁边等我,对着我笑,每当这个时候,我都会觉得有  2020-11-04 …

英语翻译我看见天空很蓝就像你在我身边的温暖生命有太多遗憾越成长越觉得孤单我很想飞多远都不会累才明白爱  2020-11-16 …

英语翻译我看见天空很蓝就像你在我身边的温暖生命有太多遗憾越成长越觉得孤单我很想飞多远都不会累才明白爱  2020-11-16 …

谁来帮我写这篇作文(高中水平),写得好再加分阅读下面文字,根据要求写作文.一阵风吹来,一篇叶子脱离了  2020-11-25 …

帮忙翻译几句话..每天放学在我快要到家的时候,总会看到爷爷在窗子旁边等我,对着我笑,每当这个时候,我  2020-12-18 …