Komponentenentwicklung - Bitmap fest einbinden



  • Hallo, Ich bin's mal wieder! 😃

    Z.Z. habe ich mir ein TCustomPanel abgeleitet, und darin ein TImage eingefügt.
    In das Image lade ich via

    Image->Picture->Bitmap->LoadFromFile("C:\\test.bmp")
    

    mein Bild.

    Klappt auch alles wunderbar: Sobald ich meine Komponente auf eine Form ziehe, hat das Panel ein Image mit dem gewünschten Inhalt.

    Jetzt möchte ich die Komponente allerdings irgendwann weitergeben.
    Das bedeutet, das BMP darf nicht lokal ansprechbar sein, da ich nicht möchte, dass jmd das BMP verändert.
    Bitmap wie Komponente sollen fest miteinander verankert sein.

    Und da habe ich mir gedacht, ob es nicht irgendwie möglich ist, ein Bitmap irgendwie in den Quellcode einzubinden (z.B. als Array).
    Entweder automatisch, oder von Hand!

    Ist das möglich ? 😕 ?
    Wenn ja: wie? Wenn nicht: wie dann?

    Liebe Grüsse...



  • Das geht auch als Array. Normalerweise würde man ein Bitmap aber als Ressource einbinden. Also eine entsprechende .rc Datei erzeugen und in das Projekt einbinden. Das kann allerdings mit speziellen Programmen von außen geändert werden.



  • Na gut, das wäre ja schon mal was!
    Und wie genau erzeugt man dann eine .rc ?
    Und wie binde ich die dann ein?



  • Einfach eine normale Textdatei mit Endung .rc erstellen und z.Bsp. so was reinschreiben

    DEMOBACK BITMAP "DemoBackground_2.bmp"

    Diese Datei dann in dein Projekt einbinden und dort das Bitmap laden.
    Etwa so

    Graphics::TBitmap* bck = new Graphics::TBitmap();
    bck->LoadFromResourceName((int)hdll, "DEMOBACK");
    


  • Danke, habe das gleich mal ausprobiert!

    Leider ist dem Compiler hdll unbekannt.

    Wenn ich dafür '0' einsetzt wird zwar kompiliert, jedoch kommt später die meldung
    dass DEMOBACK nicht gefunden wurde!

    Mache ich etwas falsch?

    ( Wofür soll der erste Wert genau stehen? 😕 )



  • Ok, mein Fehler. Das hdll war von einer dll-Ressource. Indeinem Fall muß das eher so aussehen

    bck->LoadFromResourceName((int)HInstance, "DEMOBACK");
    


  • 😃
    Klasse! Jetzt funktioniert es!
    Danke schön!

    btw:
    Wenn ich meine Komponente weitergeben möchte, welche der Dateien muss ich dann
    der .bpk hinzufügen, damit sie ein anderer installieren kann?


Anmelden zum Antworten