本周的工作主要是在前面几周工作的基础上进行增加或者修改,整体而言没有遇到大的问题,只有在周五才发现了一个问题。
这个问题是在给定的范围内,以相同的间隔绘制指定条数的图形,会出现填不满整个绘图区域的问题。
我想了下,问题的原因应该时这样的:绘图区的宽度(width)可能不是所绘图的条数(n)的整数倍,这就导致在进行相除时,导致每个间隔(perwidth)并不是一个整数。绘图是以像素点进行,而像素的最小单位是1,这就要求间隔必须为整数。在默认的int型除法中,采用的是高斯函数,即取得不大于商的最大整数,这就导致实际上n* perwidth<width,即所占用的长度区间是小于整个绘图区域的。
目前我思考的一个方法是,在数据的条数与像素位置进行转换时,对所取得的像素位置进行4舍5入,那么第x条数据所需要的绘图位置,为
(int)(x*((float)width/(float)n)+0.5)
下面编写通过设定width和n来计算一下每个区间开始的像素位置;
这里设width=954,n=240
954/240=3.975
首先是用原始方法,不进行四舍五入的整型除法
最后一个绘图区域的开始位置为717,还有230多的区域没有使用
后使用上面公式给到的方法
最后一个区域没950,平均每个区域的大小为4,中间有个别区域的大小为3
整体的效果达到了设计的预期要求
每周工作学习总结(三月第2周)
最新推荐文章于 2024-09-08 21:26:22 发布