6

我试图通过提供抗锯齿来改进我在项目中所做的一些绘图。我正在玩一个使用 Graphics32 库而不是标准的 delphi Canvas 函数的简单项目。我正在用简单的形状进行测试,发现效果模糊,想知道它是否可以修复。

procedure TForm1.FormPaint(Sender: TObject);
var
    Points : TArrayOfFixedPoint;
    ar: array [0 .. 6] of Tpoint;
begin
    // Antialiased Triangle
    SetLength(Points, 3);
    Points[0] := FixedPoint(20, 20);
    Points[1] := FixedPoint(20 + 100, 20 + 20);
    Points[2] := FixedPoint(20, 20 + 20);
    PolygonFS(self.mBitmap, FixedPointToFloatPoint(Points), clYellow32, pfAlternate, nil); // Draw Filled Polygon
    PolylineFS(self.mBitmap, FixedPointToFloatPoint(Points), clBlack32, true, 1); // Draw Outline

    self.mBitmap.DrawTo(self.Canvas.Handle, 0, 0);

    // Normal Triangle
    ar[0] := point(20, 150);
    ar[1] := point(20 + 100, 150 + 20);
    ar[2] := point(20, 150 + 20);
    ar[3] := point(20, 150);
    self.Canvas.Brush.Color := clYellow;
    self.Canvas.Polygon(slice(ar, 3));
end;

抗锯齿三角形的斜边更平滑,但两条直线看起来很模糊,这是有道理的,因为它是抗锯齿的。有没有一种方法可以在垂直线和水平线不融合的情况下两全其美,同时平滑斜边?

编辑: 我使用的 Graphic32 版本是来自官方 Github Fork的主分支的顶部,因为上一个版本似乎是 2012 年的 1.9.1。

4

0 回答 0