结论 由于显示器的像素点精度问题在使用Pen进行绘制时会进行四捨五入 如果当前映射模式不合适会导致应用端不同的输入在四捨五入后得到一样的显示 解决办法如Excel一般不要提供太小的线宽比如最小线宽必须是折算后的一个像素如/ = mm 第四步以上规则只适用于Pen的Line绘制方法直线还可以通过FillRect或FillSolidRect方式并且会出现开头讲的现像来再试试FillSolidRect会如何 long xStart = ; long xLineLen = *; long xInterval = ; for(int ii=;ii<=;ii++) { CRect rc(xStart+xInterval*iixStart+xInterval*ii+ii+xLineLen); dcFillSolidRect(rcRGB()); } 结果 只显示出后四条线为何?为啥不四捨五入了呢? 第五步矩形可能会是先四捨五入再算宽度的?是吗?做个测试先打印时加多一行测试TRACE(_T(\n%f%f)rcleft*rcright*);输出如下 假设一下如果先四捨五入然后再相减得到宽度是 比较一下输出效果果然如此 [] [] |