AGB  ·  Datenschutz  ·  Impressum  







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

GR32: TImage32 in den Hintergrund

Ein Thema von S - tefano · begonnen am 9. Okt 2008 · letzter Beitrag vom 9. Okt 2008
Antwort Antwort
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

GR32: TImage32 in den Hintergrund

  Alt 9. Okt 2008, 01:07
Hallihallo,

nach langer Zeit reaktiviere ich meinen Account
Entschuldigt schonmal alles was an meinem Ansatz ungünstig ist, aber es ist spät.

Mein generelles Ziel: Ein Bild anzeigen und dem User ermöglichen, eine Auswahlbox irgendwo im Bildbereich zu ziehen, die nach MouseUp stehen bleibt. Also einfach eine Markierungsbox, die man aufziehen und verschieben kann, um den Programm zu sagen "ich will diesen Bereich hier". Weil es mir ein paar nette Eigenschaften bietet, benutze ich zur Anzeige des Bildes ein TImage32 aus der GR32.
Die Auswahlbox wollte ich so realisieren, dass ich eine zweite Image-Komponente einfach über die erste lege, und dort via MouseMove etc meine Box zu malen.
Problem dabei: TImage32 bleibt partout im Vordergrund, egal an welcher Stelle ich die Komponentenreihenfolge beeinflusse. Weder Paintbox noch normales TImage gehen vor ein TImage32.
Ein weiteres TImage32 ist mir irgendwie zu doof, das wird nämlich nicht so ohne weiteres Transparent (da TImage das ja irgendwie von Haus aus mitbringt (oder war es Paintbox... auf jeden Fall funktionierte es vorhin mit einem normalen TImage im Hintergrund). Im Hintergrund-TImage32 einfach einen extra Layer zu erzeugen lasse ich mir als Notfallschirm offen, da weiß ich noch nicht genau wie und ob es da Probleme mit den Koordinaten gibt (wenn das Bild gestrtecht wird braucht man ja eine Umrechnung von Windows-Koordinaten und Koordinaten im gestauchten Bild).

Fällt einem was ein?
Übrigens als schüchterne Anmerkung... ich weiß grad nicht mehr warum es TImage32 sein muss. Eigentlich wollte ich schreiben "Weil ich bei den Standard-VCL teilen nicht herausbekomme auf wieviel Pixel das Bild gestaucht wurde", aber das geht ja glaub ich über die Canvas.Width und Height. Vielleicht weiß ichs morgen...
[Edit]Genau, es war wegen des coolen ScaleMode "smScaledOptimal" oder so, der skaliert ein Bild wenn eine der Dimensionen zu groß ist entsprechend proportional runter, und wenn es nicht zu groß ist lässt er es original stehen, also keine Vergrößerung. Ist das mit dem normalen TImage zu erreichen? Proportional=true und Stretch=true vergrößern ein Bild ja so dass es die Leinwand in etwa genau ausfüllt.[/Edit]

Gute Nacht,

Stefan
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#2

Re: GR32: TImage32 in den Hintergrund

  Alt 9. Okt 2008, 11:44
Ich hatte mich geirrt, zum einen bietet TImage ein smScaledOptimal-Pendant an (proportional=true, stretch=false), zum anderen kann man im TImage aber nicht die Größe der u.U. verkleinerten Bitmap anzeigen lassen.
Habe mir das mal mit einer Methode gemacht. Wens interessiert:

Delphi-Quellcode:
function getBildSeitenVerhaeltnis(x, y: integer): double;
begin
  result:= Max(x, y) / Min(x, y);
end;

function getDisplayedImageSize(image: TImage): TPoint;
var
  quot: double;
begin
  quot:= getBildSeitenVerhaeltnis(image.Picture.Width, image.Picture.Height);
  result.X:= 0;
  result.Y:= 0;
  if (Max(image.Picture.Width, image.Picture.Height) <= Max(image.Width, image.Height)) then begin
    result.X:= image.Picture.Width;
    result.Y:= image.Picture.Height;
  end
  else begin
    if (image.Picture.Width >= image.Picture.Height) then begin
      result.X:= image.Width;
      result.Y:= round(image.Width / quot);
    end
    else begin
      result.Y:= image.Height;
      result.X:= round(image.Height / quot);
    end;
  end;
end;
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  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:18 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