Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Programm starten mit JPG, im Programm als BMP verwenden ?? (https://www.delphipraxis.net/101888-programm-starten-mit-jpg-im-programm-als-bmp-verwenden.html)

FLINKER_FINGER 19. Okt 2007 17:11


Programm starten mit JPG, im Programm als BMP verwenden ??
 
hallo,

bin gerade dabei mit Canvas ein wenig zu experimentieren. Habe quasi eine sehr große Karte auf der ich herumlaufen kann. Dazu lade ich eine BPM (1000x600) in ein TImage. Jetzt lasse ich mit mit canvas.copy nur den kleinen Teil anzeigen den ich brauche. Dieser ist auch noch vergrößert und stellt den Teil der map dar, in dem ich mich gerade aufhalte.
Weil BMP s aber so groß sind wollte ich lieber das JPG-Format zum laden verwenden... wenn ich das mache kommt die Fehlermeldung das es nur mit BMP möglich ist sich einen Teil mit canvas.copy anzeigen zu lassen.
Kann man das irgendwie umgehen ??
Irgendwie das jpg laden und dann nach dem Programmstart in ein BMP umwandeln, damit man die Funktion weiterhin nutzen kann ??

nachti1505 19. Okt 2007 17:23

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Delphi-Quellcode:
procedure LoadJPG(Buffer: TImage);
var jpeg: TJPEGImage;
   
begin
  jpeg := TJpegImage.Create;
  jpeg.LoadFromFile('bla.jpg');
  Buffer.Picture.Bitmap.Assign(jpeg);
  jpeg.Free;
end;
Glaub ich...

FLINKER_FINGER 19. Okt 2007 17:35

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
jau hat super geklappt =)

nun würde ich gerne noch einen schritt weiter gehen und das JPG-Bild im Quellcode haben. soll bedeuten, wenn ich jmd. die Exe schicke, möchte ich nicht immer noch das JPG-Bild mitsenden müssen. Geht das ?

DeddyH 19. Okt 2007 17:45

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Pack das Bild in die Ressourcen.

FLINKER_FINGER 19. Okt 2007 17:59

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Wie gehtn das ?

DeddyH 19. Okt 2007 18:05

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Schau mal z.B. bei den Schweizern (statt BITMAP musst Du RC_DATA nehmen).

FLINKER_FINGER 20. Okt 2007 23:21

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
hmm irgendwie will er das nicht richtig laden.... er sagt immer das er die Ressource datei nicht finden kann. Könnte jmd. so freundlich sein und sagen was falsch ist, bekomme das einfach nicht hin.

Code:
var jpeg : TJPEGImage;
    stream:TResourceStream;
begin
  jpeg := TJpegImage.Create;
  try
    Stream := TResourceStream.Create(hinstance, 'myres.res', RT_RCDATA);
    try
    jpeg.LoadFromstream(stream);
    imgback.Picture.Bitmap.Assign(jpeg);
     finally
       Stream.Free;
     end;
     finally
       jpeg.Free;
     end;
Das mit dem erstellen der RES-Datei hat geklappt. Da steht jetzt das bild und das drin : 1 RCDATA "background_kl.jpg" Die datei trägt den Namen myres.res
er meckert aber bei der Zeile, das er die Ressourcedatei nicht finden kann:
Code:
Stream := TResourceStream.Create(hinstance, 'myres.res', RT_RCDATA);
was ist dort falsch ???

DeddyH 21. Okt 2007 10:50

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Du hast eine Grafik in der Ressource mit der ID 1. Also müsste
Delphi-Quellcode:
Stream := TResourceStream.CreateFromID(hinstance, 1, RT_RCDATA);
da besser passen.

FLINKER_FINGER 21. Okt 2007 11:47

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
wenn ich diese Zeile :
Delphi-Quellcode:
Stream := TResourceStream.Create(hinstance, 'myres.res', RT_RCDATA);
durch diese ersetze:
Delphi-Quellcode:
Stream := TResourceStream.CreateFromID(hinstance, 1, RT_RCDATA);
kommt eine Access violation...
Müsste ich nicht noch irgendwo sagen aus welcher RES-Datei er das einlesen soll ??

DeddyH 21. Okt 2007 11:51

Re: Programm starten mit JPG, im Programm als BMP verwenden
 
Nein, wenn Du die Zeile
Delphi-Quellcode:
{$R Deine_Ressource.res}
eingefügt hast, ist diese ja gegen Deine *.exe gelinkt (daher ja auch hInstance). Der Fehler muss woanders liegen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Seite 1 von 2  1 2      

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