AGB  ·  Datenschutz  ·  Impressum  







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

FMX TPaintBox

Ein Thema von ScharfeMietze · begonnen am 9. Feb 2023 · letzter Beitrag vom 10. Feb 2023
 
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#6

AW: FMX TPaintBox

  Alt 9. Feb 2023, 22:23
Wie ist denn Windows/Desktop/Monitor eingestellt?
> Desktop > Konextmenü > Anzeigeeinstellungen > Skalierung und Anordnung

Und was hast du dazu in den Projektoptionen angegeben?
> Projektoptionen > Anwendung > Manifest > DPI-Unterstüzung (natürlich für die Windows-Configs)

@KodeZwerg
Wenn, dann natürlich pb1.ScreenToClient, denn Self.ScreenToClient wird nicht ganz passen.
Und eventuell sicherheitshalber auch nochmal von pb1 zu img1 umrechnen, also pb1.ConvertLocalPointTo(img1,...) oder img1.ConvertLocalPointFrom(pb1,...),
oder gleich direkt img1.ScreenToClient verwenden, falls die Beiden unterschiedlich skallieren.

Und dann noch der Spaß, falls auch noch das Bitmap in TImage gestrecht/scaliert wird.
z.B. in der VCL ändert sich die Größe des Bitmaps nicht, wenn sich die Größe des TImages ändert, nachdem das erste Mal auf das Bitmap zugegriffen (es generiert) wurde. Und hier vermutlich auch nicht.
Unter Windows war nur kurz zu Testzwecken und ist sofort wieder runter geflogen.
Diese screen to Client geschichten habe ich unter FMX in Android nicht...

Delphi-Quellcode:
procedure THeaderFooterForm.pb1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
var
  Canvas: TCanvas;
  BitmapPos: TPointF;
begin
  //BitmapPos:= PointF(X, Y); // <-- Zeichnet nicht
  //BitmapPos:= pb1.ScreenToLocal(PointF(X, Y)); // Zeichnet aber versetzt
  BitmapPos:= pb1.LocalToScreen (PointF(X, Y)); // <-- Zeichnet nicht
// pb1.ConvertLocalPointTo(img1,TPointF.Create(X, Y));

  Canvas := img1.Bitmap.Canvas;
  Canvas.BeginScene;
  try
    Canvas.Stroke.Color := TAlphaColorRec.Green;
    Canvas.Fill.Color := TAlphaColorRec.Green;
    // Canvas.DrawEllipse(RectF(X - 10, Y - 10, X + 10, Y + 10), 1); // Zeichnet aber versetzt
    Canvas.DrawEllipse(RectF(BitmapPos.X - 10, BitmapPos.Y - 10, X + 10, BitmapPos.Y + 10), 1);
  finally
    Canvas.EndScene;
  end;
  pb1.Repaint;
end;
Das sind die Sachen die ich erfolglos ausprobiert habe.... Ev. ist nur irgendwo die Syntax falsch?
  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 23:24 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