感觉这个时钟除了一些数学的知识外,还是映射坐标问题,到现在我也没有弄明白是怎么回事,贴点代码
void SetIsotropic(HDC hdc,int cxClient,int cyClient)
{
//设置映射模式为MM_ISOROPIC
SetMapMode(hdc,MM_ISOTROPIC);
//设置Windows窗口大小1000*1000,窗口是看不到的,窗口的数据是用来显示到视图的
SetWindowExtEx(hdc,1000,1000,NULL);
//下面两句还是不理解,得不到好的解释,下面-cyClient改为cyClient后,时钟会上下反转
SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);
//下面设置圆心的显示地方
SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
}SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);这个地方为什么要做成负的cyClient?跟画图有关?那为什么不正着玩圆呢?郁闷中。
本文深入探讨了使用时钟映射和坐标问题时的代码实现细节,通过实例分析了如何设置映射模式、调整窗口大小及坐标变换,特别解释了负值在坐标变换中的作用及原理,帮助开发者解决时钟显示方向反转的问题。
612

被折叠的 条评论
为什么被折叠?



