Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bilder zu Programmstart laden?
110022 - Mi 25.02.09 18:29
Titel: Bilder zu Programmstart laden?
Hallo zusammen.
Als wie es im titel steht geht es darum, dass ein paar bilder beim Start geladen werdn sollen.
Mittlerweile hab ich auch erfahren dass es über eine Klasse TBitmap geht, aber ich habe keine Ahnung wie man diese einbindet und dann die Bilder daraus nutzt.
Vllt könnt ihr mir ja helfen.
110022
jaenicke - Mi 25.02.09 18:33
Erstens brauchst du eine Variable bzw. ein Feld vom Typ TBitmap. Das kommt z.B. oben unter private hin.
Delphi-Quelltext
1: 2:
| private MyImage: TBitmap; |
In OnCreate des Formulars erzeugst du das Objekt und lädst die Datei:
Delphi-Quelltext
1: 2:
| MyImage := TBitmap.Create; MyImage.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'MeinBild.bmp'); |
Dann in OnDestroy entfernst du das Objekt wieder aus dem Speicher mit Free.
Jetzt kannst du deine Bitmap im Programm irgendwo verwenden. Zum Beispiel in ein Image zeichnen mit ImageX.Picture.Bitmap.Canvas.Draw oder in das Image legen mit ImageX.Picture.Bitmap.Assign, z.B. in OnMouseEnter / OnMouseLeave.
110022 - Mi 25.02.09 18:35
Und wenn es mehrere Bilder werden sollen?
Reihe ich die dann untereinander oder wie?
jaenicke - Mi 25.02.09 18:43
Wenn die Anzahl klein ist, ja.
Wenn es mehr sind, dann bietet sich eher eine TImageList oder ein Array an, wobei man dann aber auch auf die Speichernutzung aufpassen muss, wenn es zu viele werden.
Durch die Einbindung der Unit Jpeg kann man ja auch Jpegs benutzen, das ginge mit einer TImageList nicht.
110022 - Mi 25.02.09 19:06
Aha, wie geht denn eine TImageList?^^
Es sind 6 Bilder die Geladen werden müssen
jaenicke - Mi 25.02.09 19:15
TImageList aufs Formular, Bilder hinzufügen, dann per Code benutzen.
Aber bei 6 Bildern sind 6 TBitmaps wohl die einfachste Lösung. ;-)
110022 - Mi 25.02.09 19:17
OK, danke.
Werds mal versuchen^^
Und Wie füge ich das ganze ein?
Image1.Picture.Bitmap.Canvas.Draw(////Was kommt hier rein?\\\\)
jaenicke - Mi 25.02.09 19:40
x und y Koordinate, an der gezeichnet werden soll, und die Bitmap. Das steht aber auch so in der Hilfe, siehe Zitat und Link...
Wenn das ganze Bild geändert werden soll, dann geht das mit Assign am einfachsten.
110022 - Mi 25.02.09 19:43
Und wie geht das dann mit assign??
jaenicke - Mi 25.02.09 19:52
jaenicke hat folgendes geschrieben : |
| oder in das Image legen mit ImageX.Picture.Bitmap.Assign, z.B. in OnMouseEnter / OnMouseLeave. |
Oder nur ImageX.Picture.Assign, sollte beides gehen, letzteres ist vielleicht noch besser.
110022 - Mi 25.02.09 19:55
jaenicke hat folgendes geschrieben : |
jaenicke hat folgendes geschrieben : | | oder in das Image legen mit ImageX.Picture.Bitmap.Assign, z.B. in OnMouseEnter / OnMouseLeave. | Oder nur ImageX.Picture.Assign, sollte beides gehen, letzteres ist vielleicht noch besser. |
Aber wie sieht das dann fertig aus?
So ja wohl nicht...
Image1.Picture.Assign('Bild.bmp');
jaenicke - Mi 25.02.09 20:09
Erstens würde da der Pfad fehlen, nur 'Bild.bmp' funktioniert nur zufällig! Siehe oben und hier:
http://www.delphi-library.de/viewtopic.php?p=499701
Zweitens willst du dein Bild ja aus der TBitmap-Variablen laden und nicht aus der Datei...
Also gib deine Variable auch an als Parameter statt deinem Bilddateinamen.
Delphi-Quelltext
1:
| Image1.Picture.Assign(MyImage); |
110022 - Mi 25.02.09 20:26
jaenicke hat folgendes geschrieben : |
Erstens würde da der Pfad fehlen, nur 'Bild.bmp' funktioniert nur zufällig! Siehe oben und hier:
http://www.delphi-library.de/viewtopic.php?p=499701
Zweitens willst du dein Bild ja aus der TBitmap-Variablen laden und nicht aus der Datei...
Also gib deine Variable auch an als Parameter statt deinem Bilddateinamen. Delphi-Quelltext 1:
| Image1.Picture.Assign(MyImage); | |
Aber was kommt dahin wenns mehrere Dateien sind, so kann der prog ja nicht wissen welche da rein soll
Oder kommt jedes Bild in eine neue TBitmap?
jaenicke - Mi 25.02.09 20:48
110022 hat folgendes geschrieben : |
| Oder kommt jedes Bild in eine neue TBitmap? |
Ja, klar.
110022 - Fr 27.02.09 22:57
jaenicke hat folgendes geschrieben : |
110022 hat folgendes geschrieben : | | Oder kommt jedes Bild in eine neue TBitmap? | Ja, klar. |
jetzt habe ich ne andere frage, ich versuche mich gerade an einer Bedingung, aber ich weiß nicht wie ich das machen soll
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| begin if image1.Picture= then begin mediaplayer1.stop; mediaplayer1.Position:=0; Image5.Picture.Assign(saus);; end else if image1.Picture= then begin mediaplayer1.play; Image5.Picture.Assign(sein); end; end; |
Da liegt mein problem
Nur die Bedingung mit dem Bild ist das Problem.
HAT SICH ERLEDIGT
jaenicke - Fr 27.02.09 23:04
Du solltest lieber den Status des MediaPlayers abfragen, ansonsten kannst du auch einen Wert in Image5.Tag speichern. Zum Beispiel 0 für aus und 1 für an.
110022 hat folgendes geschrieben : |
| HAT SICH ERLEDIGT |
Das ging ja schnell. :lol:
110022 - Fr 27.02.09 23:06
jaenicke hat folgendes geschrieben : |
Du solltest lieber den Status des MediaPlayers abfragen, ansonsten kannst du auch einen Wert in Image5.Tag speichern. Zum Beispiel 0 für aus und 1 für an.
110022 hat folgendes geschrieben : | | HAT SICH ERLEDIGT | Das ging ja schnell. :lol: |
Wie denn das?
Es geht ja nach den Bildern, es kommt ja auf die Bilder an was passiert
Das erledigt bezog sich auf eine Meldung die probleme gemacht hat
Achso, habs hinbekommen, das klappt wunderbar^^
Danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!