Autor Beitrag
thommy f
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: 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

ausblenden Delphi-Quelltext
1:
Bild_1.scaled					


oder

ausblenden Delphi-Quelltext
1:
Bild_1.proportional					

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 19.08.06 11:19 
Ah. Teilweise mein Fehler :oops:. 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: Sa 19.08.06 11:29 
poste mir mal bitte ne funktionierende Source-Zeile. Scheinbar bin ich heute zu blond um diese Eigenschaft aufzustöbern. Sorry !!! :!: :oops: :!:

_________________
Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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:
ausblenden 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;                        // x-scale
  ys:= h2 / h;                        // y-scale
  if xs<ys then sc:= xs else sc:= ys; // scale
  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."