AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia iOS [Gelöst] "Scharfes" Zeichnen mit Firemonkey
Thema durchsuchen
Ansicht
Themen-Optionen

[Gelöst] "Scharfes" Zeichnen mit Firemonkey

Ein Thema von Union · begonnen am 17. Okt 2013 · letzter Beitrag vom 17. Okt 2013
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

[Gelöst] "Scharfes" Zeichnen mit Firemonkey

  Alt 17. Okt 2013, 20:51
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;
Angehängte Grafiken
  
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (17. Okt 2013 um 22:18 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: "Scharfes" Zeichnen mit Firemonkey

  Alt 17. Okt 2013, 21:49
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: "Scharfes" Zeichnen mit Firemonkey

  Alt 17. Okt 2013, 22:14
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.
Miniaturansicht angehängter Grafiken
fmxellipseandfont.png  
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (17. Okt 2013 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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