最近一直在弄转盘抽奖的。一开始的时候没注意,也看不出什么。等到昨天弄转动的时候才发现问题。
转盘竟然不圆。
只差1个像素,静止的时候是看不出的。
但是一动起来,明显的可能看到整个转盘在左右摆动,简直了~
最开始以为是起始画的坐标。比如我以为是从1开始的,但它是从0开始的。
然后把所有起始坐标都+1。
再试,依然。
放着先不管,先弄转动速度。
有两种方法。一直是提前把转动的图给存下来,然后当要转的时候,再从内存里把图给画出来。
这里做了下测试,存了36张图,也就是每转10度存一张。
然后测试。
如果使用这种存图的方法。软件运行的时候。内存需要40M左右,CPU消耗在2%~3%的样子。
如果是转动的时候直接用GDI+来旋转,然后画出来。CPU在8%左右,内存在4M。
想了一下,内存估计大家都不缺了,那就节省CPU吧。
弄好了一试,不行~因为10度太大了。
当要转动快的时候。每0.01秒转10度或者转30度都没问题。
但是当转盘要停止的时候,10度10度的跳是明显会卡顿的。
如果存360张图呢?一算,那内存大概需要400M了。
一台电脑8G,一下就用了1/16的样子。如果是4G内存的电脑,就1/10,如果是2G,呃,现在还有2G的吗?那就是1/5。
CPU的话,我的是3.6G的。8%是0.288G。如果电脑CPU是2G的,消耗在14%的样子,好像要更能接受些。
又决定还是不用存图吧。
然后又回到了原来的问题,圆不圆。
放大了像素看,就是一个像素的问题。
搞啊搞,搞了一下午,都要吐了,终于在写这篇文章前,找到问题了。
不是起始画的坐标问题,而是我计算宽高的问题。
在计算的宽高上,再-1,就可以了。
回头想想。前面的时候就发现了圆的右边比左边更靠边1PX,怎么就没想到要把宽高减个1呢?
还到处去查资料,GDI+画圆不圆怎么办?又怀疑是GDI+模块的原因,又去看代码,测试~~~~
唉,人傻不能怪社会……