| Autor |
Beitrag |
thommy f
      
Beiträge: 114
Windows 2K pro
Delphi 5 Enterprise
|
Verfasst: Sa 19.08.06 09:24
Frage:
Hab zu diesem Thema im Forum zwar schon was gefunden, aber das hilft mir nur bedingt weiter.
Ich hab mehrere Image-Komponenten, die ihre Größe fix behalten sollen. Ich möchte darin Bilder direkt proportional zu Ihrer Originalgröße verkleinert darstellen.
Primär ist mir das mit dem Seitenverhältnis umrechnen schon klar. Aber, wo / wie kann ich auslesen, wie groß B/H das derzeit verwendete Bild ist.
Weil: das Seitenverhältnis mit einem festen Faktor zu verwenden, hat ja nur dann Sinn, wenn alle Bilder das gleiche Format bzw. zumindest auch im Original das gleiche Seitenverhältnis haben.
Ich weiß allerdings in meinem Programm nicht im Vorfeld, mit welchen Bildern der Benutzer arbeitet und müsste somit das Seitenverhältnis aus der Bild-Datei selbst auslesen.
_________________ Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 19.08.06 09:28
Wenn du TImage benutzt, dann solltest du dir mal die Eigenschaften Scaled und Proportional anschauen 
_________________ We are, we were and will not be.
|
|
thommy f 
      
Beiträge: 114
Windows 2K pro
Delphi 5 Enterprise
|
Verfasst: Sa 19.08.06 11:16
| Zitat: | | ...Eigenschaften Scaled und Proportional anschauen |
Wie greift man denn darauf zu?
Im Project Inspector finde ich diese Eigenschaten nicht
und
Delphi-Quelltext
oder
Delphi-Quelltext
hab ich auch nicht gefunden.
In der Delphi Hilfe findet man / ich da auch nicht wirklich einen zusammenhang.
_________________ Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 19.08.06 11:19
Ah. Teilweise mein Fehler  . Die Eigenschaft, die ich meinte, ist nicht Scaled, sondern Stretch. Proportional gibts aber. Wie gesagt, ich rede von der Komponente TImage, mit deren Hilfe man sehr einfach Bilder anzeigen lassen kann. Ein Bitmap an sich hat diese Eigenschaften natürlich nicht.
Wie zeigtst du denn die Bilder bisher an?
_________________ We are, we were and will not be.
|
|
thommy f 
      
Beiträge: 114
Windows 2K pro
Delphi 5 Enterprise
|
Verfasst: Sa 19.08.06 11:29
_________________ Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 19.08.06 12:17
Da gibts keine Source-Zeile. Ich gehe die ganze Zeit von der Vermutung aus, dass du die Komponente TImage zum Anzeigen der Bilder benutzt. Diese Komponente besitzt die Eigenschaften Stretch und Proportional. Diese kann man ganz bequem über den Objekt-Inspektor auf True setzen.
Dann werden sämtliche Bilder, die da rein geladen werden, automatisch zurechtgestutzt oder gestreckt.
Mehr kann ich nicht sagen, weil ich nicht weiß, wie du Bilder anzeigst. Vielleicht zeigst du mal etwas Sourcecode 
_________________ We are, we were and will not be.
|
|
thommy f 
      
Beiträge: 114
Windows 2K pro
Delphi 5 Enterprise
|
Verfasst: Sa 19.08.06 12:29
Ich hab ja auch TImage Komponenten. Die Eigenschaft Stretch finde ich problemlos. Aber Proportional gibt´s in meinem Project Inspector nicht für diese Komponenten. Mag evtl. an der Delphi-Version liegen (D5Enterprise english).
Ich poste dir mal den kompletten Source. Dann kannst du evtl. mehr damit anfangen
Einloggen, um Attachments anzusehen!
_________________ Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
|
|
thommy f 
      
Beiträge: 114
Windows 2K pro
Delphi 5 Enterprise
|
Verfasst: Sa 19.08.06 12:34
und hier, nur zum Beweis: noch n Screenshot von meinem PI
Einloggen, um Attachments anzusehen!
_________________ Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 19.08.06 16:25
In D7 gibt es diese Eigenschaft. Wird wohl eine der in D6 hinzugekommenen sein.
Zum Skalieren hatte ich mal was geschrieben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TPreviewList.RescaleGraphic(Source:TGraphic; Target: TBitmap); var w, h, w2, h2: Integer; xs,ys,sc:Double; begin w:= Source.Width; h:= Source.Height; w2:= Target.Width; h2:= Target.Height; xs:= w2 / w; ys:= h2 / h; if xs<ys then sc:= xs else sc:= ys; Target.Height:= trunc(h*sc); Target.Width:= trunc(w*sc); Target.Canvas.StretchDraw(Rect(0, 0, trunc(w*sc), trunc(h*sc)), Source); end; |
Diese Funktion skaliert die TGraphic in Source so, dass sie in das übergebene TBitmap passt. Ich hatte später nochmal optimiert, die neue fine ich aber grad nicht.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|