アンチエイリアシングを提供することで、プロジェクトで行っている描画の一部を改善しようとしています。標準の Delphi Canvas 関数の代わりに、Graphics32 ライブラリを使用した単純なプロジェクトで遊んでいます。私は単純な形状でテストしていて、ぼかしの影響に気づき、修正できるかどうか疑問に思っていました.
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;
アンチエイリアス処理された三角形の斜辺ははるかに滑らかですが、2 つの直線がぼやけて見えるのは、アンチエイリアス処理されているためです。斜辺を滑らかにしながら、垂直線と水平線が混ざらない両方の世界を最大限に活用する方法はありますか?
編集: 私が使用している Graphic32 のバージョンは、2012 年の最後のリリースが 1.9.1 であるように見えるため、公式 Github フォークのマスター ブランチのトップです。