Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   iOS [Gelöst] "Scharfes" Zeichnen mit Firemonkey (https://www.delphipraxis.net/177125-%5Bgeloest%5D-scharfes-zeichnen-mit-firemonkey.html)

Union 17. Okt 2013 19:51


[Gelöst] "Scharfes" Zeichnen mit Firemonkey
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe ein Problem beim Zeichnen auf einen FMX-Canvas. Das sieht alles total pixelig und verschwommen aus. Ich zeichne aber mit den gleichen Befehlen, die Firemonkey intern dafür verwendet. Ich habe sogar die Objekteigenschaften im Debugger verglichen. Bis auf die Farben ist alles identisch. Was fehlt da?

Beispiel für ein FMX TEllipse, das scharf gezeichnet wird:
Delphi-Quellcode:
  Cursor := TEllipse.Create(ImageControl1);
  Cursor.Visible := False;
  Cursor.HitTest := False;
  Cursor.Width := Target.BulletWidth * Painter.Scale;
  Cursor.Height := Cursor.Width;
  Cursor.Parent := ImageControl1;
  Cursor.StrokeThickness := 1;
Beispiel für eine selbst gezeichnete Ellipse, die ist unscharf. Wie übrigens auch die Textausgaben:
Delphi-Quellcode:
  FBitmap.Canvas.BeginScene;
  FBitmap.Canvas.StrokeThickness := 1; //FScale;
  FBitmap.Canvas.Fill.Kind  := TBrushKind.bkSolid;
  FBitmap.Canvas.Stroke.Kind := TBrushKind.bkSolid;
  FBitmap.Canvas.Fill.Color  := FTarget.BackColor;
  FBitmap.Canvas.Stroke.Color := FTarget.Color;
  r := RectF(FScale*(Ring-1)*FTarget.RingWidth+1,
             0,
             FScale* (FTarget.Width-(Ring-1)*FTarget.RingWidth)-1,
             0);
  r.Top   := r.Left;
  r.Bottom := r.Right;

  FBitmap.Canvas.FillEllipse(r, 1);
  FBitmap.Canvas.DrawEllipse(r, 1);
  FBitmap.Canvas.EndScene;

Namenloser 17. Okt 2013 20:49

AW: "Scharfes" Zeichnen mit Firemonkey
 
Habe kein FireMonkey, aber für mich sieht das so aus, als ob du auf ein Bitmap renderst, das anschließend hochskaliert wird. Lösung wäre, entweder den Zwischenschritt über das Bitmap komplett rauszunehmen (wie das bei Firemonkey gehen könnte, weiß ich nicht), oder die Auflösung des Bitmaps zu erhöhen.

Union 17. Okt 2013 21:14

AW: "Scharfes" Zeichnen mit Firemonkey
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, das war mein Denkfehler. Die Firemonkey Shapes skalieren durch Neuzeichnen, das Bitmap natürlich nicht. Also habe ich jetzt ohne Skaling gearbeitet und erzeuge dann das Bitmap jeweils neu in der dem Scaling entsprechenden Auflösung. Auch beim Runtersklarieren gab es nämlich diese bzw. ähnliche Probleme, die Verwendung eines Bitmaps mit einer vielfachen Auflösung sah beim Verkleinern auch übel aus. Denn dann verschwanden teilweise feine Linien. So sieht es jetzt aus wie gewünscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz