Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Wo befindet sich die Grafik in der TImage? (https://www.delphipraxis.net/196457-wo-befindet-sich-die-grafik-der-timage.html)

Alallart 22. Mai 2018 18:46

Wo befindet sich die Grafik in der TImage?
 
Entweder es ist da, nur ich sehe es nicht, oder es ist nicht da. Ich suche die Position des Bildes, bzw. Canvas innerhalb der Image Fläche. Was meine ich damit?

Nehmen wir an ich habe eine Image auf dem Formular platziert, die Komponente ist 500x500 Pixel, das Bild ist 1000x2000 Pixel. Soweit nichts anderes eingestellt ist, kann man die Position innerhalb der Komponente ermitteln. Sie beginnt oben links und endet im unsichtbaren Bereich jenseits der 500.

Nun schalten wir Strech, Proportional und Center auf True. Nun befindet sich das Bild in einem Teilbereich der TImage. Was ich mich nun frage ist ob es irgendwelche Angaben gibt die mir sagen wie viel Pixel von links oder oben die Grafik beginnt.

Ähnlich ist es wenn man eine Grafik läd die nur 100x100 Pixel groß ist. Die Grafik befindet sich irgendwo mitten in der Image Fläche.

Natürlich kann man alles selbst berechnen, aber ich frage mich ob es da bereits etwas fertiges gibt. Ich finde es zumindest nicht.

KodeZwerg 22. Mai 2018 20:23

AW: Wo befindet sich die Grafik in der TImage?
 
Eine sekunde in DP gesucht und das kam dabei raus https://www.delphipraxis.net/177400-...-position.html

Alallart 22. Mai 2018 23:08

AW: Wo befindet sich die Grafik in der TImage?
 
Ist nicht das was ich meine, aber trotzdem Danke.

Uwe Raabe 23. Mai 2018 00:30

AW: Wo befindet sich die Grafik in der TImage?
 
TImage hat eine function DestRect, die das effektive Rechteck der Grafik liefert. Die ist zwar protected, aber mit einem class helper kommt man da sehr einfach ran:
Delphi-Quellcode:
type
  TImageHelper = class helper for TImage
  private
    function GetGraphicPos: TPoint;
  public
    property GraphicPos: TPoint read GetGraphicPos;
  end;

function TImageHelper.GetGraphicPos: TPoint;
begin
  Result := DestRect.Location;
end;

...
var
  P: TPoint;
begin
...
  P := Image1.GraphicPos;
...

himitsu 23. Mai 2018 02:24

AW: Wo befindet sich die Grafik in der TImage?
 
Delphi-Quellcode:
type
  TImageAccess = class(TImage); // Grund siehe Vererbungsleere und protected gegenüber strict protected

P := TImageAccess(Image1).DestRect.Location;

KodeZwerg 23. Mai 2018 07:03

AW: Wo befindet sich die Grafik in der TImage?
 
Für ältere Delphis wo es Eigenschaft "Location" noch nicht gibt muss man über Eigenschaft "TopLeft" gehen.

bytecook 23. Mai 2018 10:12

AW: Wo befindet sich die Grafik in der TImage?
 
Zitat:

Zitat von himitsu (Beitrag 1402717)
Delphi-Quellcode:
type
  TImageAccess = class(TImage); // Grund siehe Vererbungsleere und protected gegenüber strict protected

P := TImageAccess(Image1).DestRect.Location;

This! Immer wieder ein Klassiker, diese Hyperraumumgehungsstraße ... äh UnitUmbiegeDeprotectionVariante :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 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