Bild resize

AKM<2b>

Erfahrenes Mitglied
ich raste bald aus:mad: :mad: :mad:
komm ich doch wahrhaftig nicht auf die Lösung...
Ich code grad ein Slideshow/Picture Viewer...
Nun begibt es sich das manchmal Bilder Größer sind als die Bildschirmauflösung..
Ich habe auf einer Form ein Image in das ich ein Picture Lade, wie immer. Dann hab ich eine Formel die das runterrechnet auf Bildschirmgröße wenns zu groß wird aber wie zum Teufel kann ich jetzt die Width und Height ändern.
Form.Image.Picture.Width ist ja read only. Ich steh vor einem Problem. Bitte helft mir

hier mal ein bisschen verzweiflungscode:
PHP:
procedure slide();
var differenz : Extended;
    prozentdifferenz : Extended;
    prozent   : Extended;
    width     : integer;
    height   :  integer;
begin
     Form2.show;
     Form2.Image1.Picture.LoadfromFile(dateiname);
     Form2.Image1.Center := True;
     if Form2.Image1.Picture.Height > Form2.Image1.Height then
     Begin
     differenz := (Form2.Image1.Picture.Height - Form2.Image1.Height);
     Prozentdifferenz  :=  (differenz * 100) / Form2.Image1.Picture.Height;
     Prozent :=100-prozentdifferenz;
     width := trunc(Form2.Image1.Picture.Height/100*prozent);
     height := trunc(Form2.Image1.Picture.Width/100*prozent);

     Form2.Image1.Height := width-10;
     Form2.Image1.Width := width-10;
     end
     else
     Form2.Image1.Stretch := False;
end;
(ja die Formel funktioniert bloß bis doppelte Bildschirmgröße)

2b
 

nexus

Mitglied
Ich bin mir nicht sicher, aber ich glaube Form.Image.Picture.Width würde nur die Größe des Image-Objekts ändern.
Um das Bild zu ändern muss man Form.Image.Picture.Bitmap.Width und Form.Image.Picture.Bitmap.Height ändern.

Aber gibt es nicht irgendwas mit fullview.Image.Picture.Graphic (oder so ähnlich), dass automatisch anpasst ?
 

AKM<2b>

Erfahrenes Mitglied
also wenn ich
Form.Image.Picture.Bitmap.Width mache und dann aber ein jpg habe isses irgendwie auch blöd..

Da muss ich mal wohl nach extra Objekten suchen...
ABer danke erstmal
Wer noch was weiß darfs mir ruhig sagen:)
2b
 

nexus

Mitglied
Vielleicht sollte ich das erst mal selber testen, bevor ich dumm rumschwätz, aber ich dachte mit der Unit JPEG kann TImage auch mit JPG-Dateien umgehen.
 

AKM<2b>

Erfahrenes Mitglied
ja also ich hab in der Delphi hilfe gelesen, dass das Timage.Picture.Bitmap nur mit Bitmaps umgehen kann.

2b
 

Dario Linsky

Erfahrenes Mitglied
keine ahnung, ob ich das richtig verstanden habe, aber probier doch mal folgendes:

Image1.Stretch := True;
Image1.Width := Screen.Width; // oder sonst irgendwas
Image1.Height := Screen.Height; // ...


regards
 

AKM<2b>

Erfahrenes Mitglied
Also ich hab jetzt echt alles versucht...

Image.Width
Image.Picture.Width
Image.Picture.Graphic.Width
Image.Picture.Bitmap.Width
...
Wenn ich die größe des Timage verändere und Timage.Stretch := True mache dann Stretcht der das wieder auf den ganzen Bildschirm...
Ich hab es jetzt schon hingekriegt (nur mit Bitmap) das der die größe des verkleinerten Bildes anzeigt, aber da der Inhalt nicht verkleinert wird schneidet er es so ab wie er es braucht...
Es kotzt mich an.................................

Muss man da vielleicht was mit Canvas und Stretchdraw machen..??
Wer damit irgendwie erfahrung hat der möge mir helfen, und dafür mit purem Gold belohnt werden. Bitte ... ich heul gleich.
Ich schmeiss die ganze A-A-wurst bald hin :(
2b
 

AKM<2b>

Erfahrenes Mitglied
jetzt schon... aber dat tut ja nischt zur sache, wenn das bild größer als der Bildschirm ist...
Danke trotzdem *ohrenhängenlass*
2b
--------------------------------------------
Programmieren macht aggressiv... lasst es lieber sein
 

znysk

Erfahrenes Mitglied
Hi Leude!

Sacht mal, wenn ich das jet richtig verstanden hab, versucht ihr immer in diesem image Feld was zu ändern, wie wäre es denn mit:

Code:
  Canvas.stretchDraw(Rect(10,10,220,220),Image1.Picture.Graphic);

da zeichneste dat Bild direckt auf die Oberfläche, mit Canvas lassen sich übrings auch noch jede Menge andere Sachen machen. Ich denke da steht in da Hilfe ne janze Menge!

Du kannst z.B. auch bestimmte Canvasbereiche Festlegen oder ähnliches.

das sieht dann ungefähr so aus
Code:
  Imagexy.Canvas.stretchDraw(Rect(10,10,220,220),Image1.Picture.Graphic);

frag mich bitte nichts genaueres. ersteres hab ich probiert. das geht.
zweiteres hatten wir vor Ewigkeiten mal in der Schule ich belese mich dazu jez, vieleicht weiß ich morgen mehr!

Tschau!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :|