Backgroundimage einem Button zuweisen?
-
Hallo Zusammen,
ich programmiere gerade eine Windows Forms-Anwendung mit Visual Studio 2005.
Wie kriege ich es hin, dass während der Methode button1_MouseDown, dem Button1
ein anderes Backgroundimage zugewiesen wird (Pusheffect)?
Habe es mit button1->BackgroundImage...???? versucht, kenne aber nicht die genaue
Syntax. Muß ich da einen relativen Pfad zum Bild angeben? Wo hinterlegt Visual
Studio eigentlich die Images, die über das Eigenschaftsfenster zugewiesen werden?MfG Markus
-
Bilder die über das Eigenschaftsfenster zugewiesen werden, landen in der Resourcendatei.
Schau Dir mal System::Drawing::Bitmap an, das kannst Du verwenden um ein neues Bild zu erzeugen und zuzuweisen. Du wirst aber ggf. noch Refresh oder Invalidate aufrufen müssen das auch wirklich das Bild neu gezeichnet wird.
-
Hallo Knuddlbaer,
Nochmals vielen Dank für Deine Hilfe.
Habe die Form1.resx gefunden und dort über vorhandene Datei hinzufügen ein Image reingepackt ..\..\Bild1b.gif . In der Methode button1_Down habe ich den Aufruf von
initializeComponent this->button1.... reinkopiert (ohne this->) und den Namen des
neuen Images eingetragen. Leider funktioniert das nicht (meckert nicht deklarierter
Bezeichner und so). Kanst Du mir bitte die richtige Syntax mal aufschreiben?MfG Markus
-
Nö, Poste die Fehlermeldung, den von Dir verwendeten Code oder schau Dir mal an was Du da genau per Copy und Paste gemacht hast (F1 auf dem interesannten Schlüsselwort).
Ist zwar unangenehmer aber der Lerneffekt ist größer
-
Hallo Knuddlbaer,
hier ist der Code und die Fehlermeldung:
private: System::Void button1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { button1->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"Bild1b"))); PortNum = FIRSTPORTCL; DataValue = 1; cbDOut(BoardNum, PortNum, DataValue); PortNum = FIRSTPORTCH; DataValue = automanu; cbDOut(BoardNum, PortNum, DataValue); }
e:\projektordner\programm c++\zeppcon\zeppcon0.0.1\zeppcon0.0.1\Form1.h(419) : error C2065: 'resources': nichtdeklarierter Bezeichner
e:\projektordner\programm c++\zeppcon\zeppcon0.0.1\zeppcon0.0.1\Form1.h(419) : error C2227: Links von "->GetObject" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
Typ ist ''unknown-type''
e:\projektordner\programm c++\zeppcon\zeppcon0.0.1\zeppcon0.0.1\Form1.h(419) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich;
-
Das Psoten von Code übern wir noch mal.
1. Codetags
2. nur den Betroffenen Teil der den Fehler erzeugt...Außerdem ist die Fehlermeldung sehr eindeutig.
resource muss definiert werden.
Woher soll die Methode resourcen kennen ?
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
-
Super das klappt , habe allerdings keine Ahnung was Dein Code macht (:: Operator ist mir noch fremd).
Tausend Dank nochmal!!!MfG Markus