Bild in Resourcen Datei speichern
-
Hallo,
kann mir jemand sagen, wie ich ein Bild in der Resourcen Datei des aktuellen
Projekts speichern kann?Wenn ich ein Control schreiben möchte, bei dem der User ein Bild festlegen
kann, soll dieses Bild mit in das Programm eingebunden werden und mit dem
Projekt zusammen gespeichert werden. (TImage macht das z.B. so)Wie geht das?
Vielen Dank schonmal!
-
Hallo,
Erzeuge dir eine Textressource (Endung .rc), binde dort das Bild mit z.Bsp.
RESNAME BITMAP "BildDatei.bmp" ein und lese es dann in deinem Programm mit
Image1->Picture->Bitmap->LoadFromResourceName((int)hdll, "RESNAME");
in dein Image ein.
Diese .rc Datei musst du dann noch deinem Projekt hinzufügen, dann kompilieren und fertig ist es.Ciao
-
-
ich hab mich evtl. nicht ganz richtig ausgedrückt.
Ich möchte kein Bild aus einer Resource laden und auch keine Resourcen Datei
von Hand erstellen. Das ist mir beider klar.Ich möchte z.B. einen eigenen Knopf programmieren der von TButton abgeleitet
ist, aber auf dem man noch ein Bild anzeigen kann. Wenn der User sich nun
meinen Knopf auf die Form zieht soll er in den Eigenschaften ein Bild wählen
können. Dieses Bild muss ja irgendwo gespeichert werden und genau da klemmts...
-
Acidmrp schrieb:
Ich möchte z.B. einen eigenen Knopf programmieren der von TButton abgeleitet
ist, aber auf dem man noch ein Bild anzeigen kann.So wie TBitbtn? Dann musst du deiner Komponente eine Property vom Typ TBitmap verpassen, halt so wie's z.B. TBitBtn macht.
-
Jansen schrieb:
Acidmrp schrieb:
Ich möchte z.B. einen eigenen Knopf programmieren der von TButton abgeleitet
ist, aber auf dem man noch ein Bild anzeigen kann.So wie TBitbtn? Dann musst du deiner Komponente eine Property vom Typ TBitmap verpassen, halt so wie's z.B. TBitBtn macht.
ja genau so. Nur soll der im WinXP Style sein. Ich teste das gleich mal mit der
TBitmap Property. Das wär ja mal super einfach wenn das so geht.EDIT:
klappt wunderbar.
Ein Beispiel für's Archiv:
Neues Image Control, dass MouseEnter und MouseLeave enthält. Zusätzlich sind
zwei Bilder vorhanden, die jeweils bei MouseEnter und MouseLeave angezeigt
werden. Damit kann man sich z.B. eigene Knöpfe zusammen stellen.typedef void __fastcall(__closure *HMouseEnter)(TObject *Sender); typedef void __fastcall(__closure *HMouseLeave)(TObject *Sender); //--------------------------------------------------------------------------- class PACKAGE MyImage : public TImage { private: HMouseEnter fMouseEnter; HMouseLeave fMouseLeave; Graphics::TBitmap* _MouseInPicture; Graphics::TBitmap* _MouseOutPicture; void __fastcall SetMouseInPictureData(Graphics::TBitmap* bmp); void __fastcall SetMouseOutPictureData(Graphics::TBitmap* bmp); // long int Offset __published: // Eigenschaften __property Graphics::TBitmap* MouseInPicture = {read=_MouseInPicture, write=SetMouseInPictureData}; __property Graphics::TBitmap* MouseOutPicture = {read=_MouseOutPicture, write=SetMouseOutPictureData}; protected: void __fastcall cmMouseEnter(TMessage&); void __fastcall cmMouseLeave(TMessage&); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, cmMouseEnter); MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, cmMouseLeave); END_MESSAGE_MAP(TGraphicControl); public: __fastcall MyImage(TComponent* Owner); __published: __property HMouseEnter OnMouseEnter = {read = fMouseEnter, write = fMouseEnter}; __property HMouseLeave OnMouseLeave = {read = fMouseLeave, write = fMouseLeave}; }; void __fastcall MyImage::SetMouseInPictureData(Graphics::TBitmap * bmp) { _MouseInPicture->Assign(bmp); } void __fastcall MyImage::SetMouseOutPictureData(Graphics::TBitmap * bmp) { _MouseOutPicture->Assign(bmp); } //--------------------------------------------------------------------------- __fastcall MyImage::MyImage(TComponent* Owner) : TImage(Owner) { _MouseInPicture = new Graphics::TBitmap(); _MouseOutPicture = new Graphics::TBitmap(); } //--------------------------------------------------------------------------- void __fastcall MyImage::cmMouseEnter(TMessage& Msg) { if(fMouseEnter) fMouseEnter(this); inherited::Dispatch(&Msg); } //--------------------------------------------------------------------------- void __fastcall MyImage::cmMouseLeave(TMessage& Msg) { if(fMouseLeave) fMouseLeave(this); inherited::Dispatch(&Msg); }