AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Wo befindet sich die Grafik in der TImage?
Thema durchsuchen
Ansicht
Themen-Optionen

Wo befindet sich die Grafik in der TImage?

Ein Thema von Alallart · begonnen am 22. Mai 2018 · letzter Beitrag vom 23. Mai 2018
Antwort Antwort
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#1

Wo befindet sich die Grafik in der TImage?

  Alt 22. Mai 2018, 19:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wo befindet sich die Grafik in der TImage?

  Alt 22. Mai 2018, 21:23
Eine sekunde in DP gesucht und das kam dabei raus https://www.delphipraxis.net/177400-...-position.html
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#3

AW: Wo befindet sich die Grafik in der TImage?

  Alt 23. Mai 2018, 00:08
Ist nicht das was ich meine, aber trotzdem Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.447 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wo befindet sich die Grafik in der TImage?

  Alt 23. Mai 2018, 01:30
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;
...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wo befindet sich die Grafik in der TImage?

  Alt 23. Mai 2018, 03:24
Delphi-Quellcode:
type
  TImageAccess = class(TImage); // Grund siehe Vererbungsleere und protected gegenüber strict protected

P := TImageAccess(Image1).DestRect.Location;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Mai 2018 um 09:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wo befindet sich die Grafik in der TImage?

  Alt 23. Mai 2018, 08:03
Für ältere Delphis wo es Eigenschaft "Location" noch nicht gibt muss man über Eigenschaft "TopLeft" gehen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Wo befindet sich die Grafik in der TImage?

  Alt 23. Mai 2018, 11:12
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
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.
  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 23:19 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