AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TGifImage & Dll eine bessere Lösung ???
Thema durchsuchen
Ansicht
Themen-Optionen

TGifImage & Dll eine bessere Lösung ???

Ein Thema von geskill · begonnen am 5. Dez 2007 · letzter Beitrag vom 6. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#1

TGifImage & Dll eine bessere Lösung ???

  Alt 5. Dez 2007, 20:07
Hallo,
bevor Ihr jetzt sagt, dass Thema wurde schon behandelt oder dass existiert doppelt und wird geschlossen, lest einmal was ich zu sagen habe ...

Also ich habe eine Animierte GIF aus einer dll geladen und kann sie auch auf eine TImage Komponente laden, jedoch mache ich das sehr ! umständlich, ich wollte fragen, ob es nicht vielleicht eine bessere, elegantere Lösung gibt, und ja ich habe schon gegoogelt etc.

So der Weg funktioniert ist aber umständlich...
Delphi-Quellcode:
PROCEDURE LoadMainMenuBanner468;
VAR LibHandle: HINST; Image: TImage; RES :TResourceStream; GIF:TGifImage;
BEGIN
  IF FileExists(ExtractFilePath(ParamStr(0))+'RESSOURCE\SYS\StartLogo.dll') = TRUE THEN BEGIN
  LibHandle:=Loadlibrary(PChar(ExtractFilePath(ParamStr(0))+'RESSOURCE\SYS\StartLogo.dll'));
  IF LibHandle >= 3 THEN BEGIN
   // Bild wird geladen...
   RES := TResourceStream.CreateFromID(LibHandle, 3, 'GIF');
   // Gif Komponente wird erstellt...
   GIF := TGifImage.Create;
   Image := TImage.Create(Application.Owner);
       TRY
        Gif.LoadFromStream(Res);
        Image.Picture.Assign(Gif);
        // in Image.Picture ist jetzt das Bild vorhanden, alles klappt prima...
        {Image.Picture.SaveToFile(ExtractFilePath(ParamStr(0))+'BannerGif.gif');}
        {Form1.ImageGIFBanner.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'BannerGif.gif');}
        {DeleteFile(ExtractFilePath(ParamStr(0))+'BannerGif.gif');}
        FINALLY
        Res.Free;
        GIF.Free;
        Image.Free;
        END;
  FreeLibrary(LibHandle);
  END ELSE
    RaiseLastOSError();
  END;
END;
Okay solltet euch nur den Code in der Mitte anschauen in den "{" & "}" Klammern...
Das geht zwar ist aber Total dumm, weil das muss doch noch anders gehen oder ?

Ich habe mal versucht:
Form1.ImageGIFBanner.Assign(Image); das geht aber schief, dann kommt ein Fehler (TImage kann nicht TImage zugewiesen werden...)

Wäre echt nett wenn sich das mal bitte einer angucken kann, danke...

MFG
geskill
Sebastian
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 14:51
Von welchem Typ ist denn überhaupt Form1.ImageGIFBanner?

Und warum lädst Du das Gif über eigentlich erst in ein TImage? Also irgendwie verstehe ich die Vorgehensweise noch nicht richtig, hier wäre es sicherlich hilfreich, wenn Du dann doch etwas mehr Informationen rausgibst.
Davon ausgehend, dass ImageGIFBanner ein TGifImage ist, würde ich halt fragen, warum Du dann die Variable GIF vom gleichen Typ einführst? Und wenn die vom gleichen Typ sind, dann sollte ein direktes Assign ganz gut klappen.

Ansonsten kannst Du bei Image-Komponenten auch immer der Eigenschaft Picture.Bitmap eine Bitmap zuweisen, eine TGifImage wiederum bietet glaube ich die Eigenschaft Graphics an (die ein solches Bitmap liefert).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#3

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 17:20
Hi,
Ich benutze die TGifImage Unit von Anders Melander.
Form1.ImageGIFBanner ist vom Typ TImage, sollte bei jeder Delphi Version dabei sein, ich habe diese halt nur so benannt.

Weiß ich vllt. noch nicht gesagt habe, die *.gif Datei ist annimiert! Ich habe bereits
Form1.ImageGIFBanner.Canvas.Draw(0,0,GIF); versucht, leider ist es dann nicht annimiert!

Wenn ihr noch mehr infos braucht dann mal schreiben ...

MFG
geskill

PS:
@ Der_Unwissende
Du hast das geschrieben...
Zitat:
Von welchem Typ ist denn überhaupt Form1.ImageGIFBanner?
Wenn man ein bischen überlegt und mal alles liest was ich geschrieben habe dann kann man auch darauf kommen, weil ich relativ weit unten bereits das
Zitat:
(TImage kann nicht TImage zugewiesen werden...)
geschrieben habe, nehm' ich dir aber nicht übel :-)
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:32
So ich habe das ganze noch mal angeschaut, hier ist die Lösung, ohne TImage Variable (wie gesagt war unnötig^^)

Delphi-Quellcode:
PROCEDURE LoadMainMenuBanner468;
VAR LibHandle: HINST; RES :TResourceStream; GIF:TGifImage;
BEGIN
  IF FileExists(ExtractFilePath(ParamStr(0))+'RESSOURCE\SYS\StartLogo.dll') = TRUE THEN BEGIN
  LibHandle:=Loadlibrary(PChar(ExtractFilePath(ParamStr(0))+'RESSOURCE\SYS\StartLogo.dll'));
  IF LibHandle >= 3 THEN BEGIN
   RES := TResourceStream.CreateFromID(LibHandle, 3, 'GIF');
   GIF := TGifImage.Create;
       TRY
        Gif.LoadFromStream(Res);
        Form1.ImageGIFBanner.Picture.Graphic := GIF;
        FINALLY
        Res.Free;
        GIF.Free;
        END;
  FreeLibrary(LibHandle);
  END ELSE
    RaiseLastOSError();
  END;
END;
Möge das noch einem anderem weiterhelfen ^^

MFG
Sebastian
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:41
Wieso prüfst du eigentlich, ob LibHandle>=3 ist?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#6

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:45
Hi,
ja das könnt ihr nicht wissen, das beduetet ungefähr so viel ob insgesammt 3 bilder in der *.dll vorhanden sind! Das kann man jetzt machen um wirklich sicher zu gehen ob doch nicht so ein Typ die Falsche *.dll nimmt, ich programmiere gerne so das es "affensicher" ist! Aber ihr könnt natürlich auch das nehmen:

Delphi-Quellcode:
  IF LibHandle <> 0 THEN BEGIN
  //Code
  END;
Sollte ja klar sein ...

MFG
geskill
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:47
*Räusper* Hast Du Dir den Rückgabewert von LoadLibrary mal angesehen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:48
Was hat denn bitte die Resourcen-Anzahl mit dem hModule zu tun?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:50
Zitat von Apollonius:
Was hat denn bitte die Resourcen-Anzahl mit dem hModule zu tun?
Nichts?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: TGifImage & Dll eine bessere Lösung ???

  Alt 6. Dez 2007, 18:51
Zitat von Die Muhkuh:
Nichts?
Eben
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.
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