1

Word ライクなアプリケーションを実装する際に、次の問題に気付きました。

Qt の QRasterizer は、行の太さが 1.0f より小さい場合、行をスキップします。ワード エディター アプリケーションでズームアウトすると、この状況に陥ります。2 つのライン ポイントの Y 値は、次のように小さくなります。

  y1 = 290.32812500000000
  y2 = 290.92187500000000

行をレンダリングするとき、Qt はそれをスキップします。これを QRasterizer::rasterize() の次のコードまで追跡しました。ここで、min_y と max_y は Y 値の 2 倍の 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 のような動作です。どれだけズームアウトしても、黒い四角形は画面上で常に黒い四角形として表示されたままになります。

コスメティック ペンを使用すると問題は解決しますが、カスタマイズ可能な線の太さと一緒に機能しません。これもサポートする必要があります。

この問題を回避する方法はありますか?

ご挨拶、

ファビアン

4

0 に答える 0