AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX Linie "wegzeichnen"

Ein Thema von Schorschi5566 · begonnen am 3. Jun 2012 · letzter Beitrag vom 7. Jun 2012
 
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

FMX Linie "wegzeichnen"

  Alt 3. Jun 2012, 09:33
Hallo Gemeinde,

klingt vielleicht trivial aber es gelingt mir derzeit nicht in einem FMX-TImage eine mit beispielsweise claRed gemalte Linie wieder rückstandsfrei zu entfernen. (Drübermalen mit einer anderen Farbe/Linienstärke) funktioniert, außer mit claNull=Transparent )

Einen DrawMode wie XOR gibt es scheinbar nicht und die Canvas-Funktion ClearRect löscht den ganzen Canvas aber nicht den über ARect angegebenen Teil (Bug?).

Mein aktueller Workarround besteht tatsächlich darin, den ganzen Canvas zu löschen und neu zu zeichnen.

Kennt jemand das Problem und hat vielleicht eine etwas elegantere Lösung parat?


Viele Grüße,
Uwe

Delphi-Quellcode:
function TCardPoint.DrawMarker(Mode : TMarkerMode; Canvas : TCanvas; UseScene :
    Boolean = True): Boolean;
begin
  Result := False;
  if UseScene then
    Canvas.BeginScene;
  try
    if Mode = mmCross then
      SetStrokeColor(claBlack)
    else if Mode = mmCircle then
      SetStrokeColor(claOrange);
    case Mode of
      mmCircle:
        Canvas.DrawEllipse(RectF(FPoint.X-7, FPoint.Y-7, FPoint.X+7, FPoint.Y+7), 1);
      mmCross:
      begin
        Canvas.DrawLine(PointF(FPoint.X-5, FPoint.Y), PointF(FPoint.X+5, FPoint.Y), 1);
        Canvas.DrawLine(PointF(FPoint.X, FPoint.Y-5), PointF(FPoint.X, FPoint.Y+5), 1);
      end;
      mmUnCircle, mmUnCross:
      begin
        Canvas.ClearRect(RectF(FPoint.X-7, FPoint.Y-7, FPoint.X+7, FPoint.Y+7));
        DoRepaintCanvas; // Workarround! ClearRect löscht den ganzen Canvas anstatt das angegebene Rect
      end;
    end;
    Result := True;
  finally
    if UseScene then
    begin
      Canvas.EndScene;
      FLayer.Bitmap.BitmapChanged;
    end;
  end;
end;
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks

Geändert von Schorschi5566 ( 3. Jun 2012 um 16:59 Uhr)
  Mit Zitat antworten Zitat
 


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 04:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz