当以小缩放级别渲染时,Qt会跳过线条

时间:2013-07-22 08:13:03

标签: qt line rasterizing

在实现类似Word的应用程序时,我注意到以下问题:

Qt中的QRasterizer在厚度小于1.0f时跳过线条。当我在单词编辑器应用程序中缩小时,我遇到了这种情况。然后,两个线点的Y值小到这个:

  y1 = 290.32812500000000
  y2 = 290.92187500000000

渲染线时,Qt跳过它。我在QRasterizer :: rasterize()中跟踪了下面的代码,其中min_y和max_y是Y值的两个乘以64(定点值):

int iTopBound = qMax(d->clipRect.top(), int((min_y + 32 + COORD_OFFSET - COORD_ROUNDING) >> 6));
int iBottomBound = qMin(d->clipRect.bottom(), int((max_y - 32 + COORD_OFFSET - COORD_ROUNDING) >> 6));

if (iTopBound > iBottomBound)
    return;

由于min_y向上舍入而max_y向下舍入,因此它会进入IF条件,因此返回时不执行任何渲染。

我可以通过启用消除锯齿来解决此问题,但这会导致渲染在缩小时变得更亮。我真正需要的是像Microsoft Word中的行为:无论你缩小多远,黑色矩形总是在屏幕上保持可见为黑色矩形。

使用化妆笔可以解决问题,但不能与可自定义的线条厚度一起使用,我也需要支持。

任何想法如何解决此问题?

问候,

费边

0 个答案:

没有答案