Button & backgroundimage problem



  • Hallo zusammen,

    ich weiß der erste post mit einen Problem ist immer blöd aber ich kanns leider nicht ändern 😕

    Zu meinem Problem:

    Ich bin gezwungener maßen dazu verdonnert mich gerade ein wenig mit c++/CLI auseinander zu setzen und nutze dafür VC++ express 2010. Soweit so gut ... da ich noch programmier neuling bin und gerad erst im 3. Monat meiner Ausbildung hänge, steh ich gerade ein wenig auf dem schlauch und bin ratlos.

    Geht um folgendes Szenario. Ich baue eine form mit einem festen Hintergrundbild (Form Backgroundimage mit einem PNG) auf dieser Form sind Links und Rechts am Rand jeweils 3 Buttons die beim Programm Start Visible->false gesetzt sind.

    In der Mitte ist ein Panel auf dem wiederum ca. 15 Buttons hinterlegt sind (Anmeldemaske durch Zahleneingabe + Help, Clear, Enter usw buttons).
    Das Panel besitzt ein Backgroundimage und über dieses Image sind transparente, ohne Border und mit FlatStyle -> Flat deklarierte Buttons gesetzt.

    Wenn die Enter Taste auf dieser Tastatur gedrückt wird werden alle diese Elemente durch 'Visible -> false' ausgeblendet. Wenn die Taste gedrückt wird werden diese aber nicht direkt ausgeblendet. Sie werden von oben nach unten ausgeblendet. Und hier hängt es ... Ich kann mir während die Buttons ausblenden ein Brot schmieren so langsam ist das ganze.
    Angedacht war es so das sich alles sofort ausgeblendet wird und später wieder eingeblendet.

    Wenn ich die Backgroundimages ausblende und nur eine Farbe (Kein backgroundimage sonder backgroundcolor) nutze wird alles sofort aus- und wieder ein geblendet ohne murren. Blende ich die Images wieder ein BOOM dauert das Prozedere wieder Ewigkeiten.

    Nun habe ich mir gedacht mach ich halt die Backgroundimages weg und versuch es mal mit einer pictureBox. Funktioniert auch alles wunderbar (Schnelligkeit ist sowohl beim ein als auch beim ausblenden gegeben). Nun habe ich jedoch ein Problem mit den am Rand liegenden Buttons. Diese sind mit GIMP gezeichnet und besitzen einen Transparenten hintergrund.

    Wenn ich die pictureBox benutze wird nicht die pictureBox als Hintergrund genommen sondern die Farbe der Form. Was zufolge hat das die transparenten Ränder der Buttons Weiß sind (Passt natürlich nicht auf den Hintergrund). Nun habe ich auf einem schönen Hintergrund einen schönen Button mit hässlichen weißen rändern.

    http://img26.imageshack.us/img26/4945/buttonfehler.jpg

    Hier mal ein kleines bild dazu.

    Nun die frage in die Runde. Jemand für eine der beiden Lösungsansätze einen tipp oder muss ich da einen komplett anderen weg gehn?

    P.S. Ja ich weiß lieber C# für Windows Forms oder MFC. Aber muss mich da zzt einarbeiten weil ich ein bestehendes Projekt übernehmen soll in naher Zukunft und das ist c++/cli.

    Grüße

    zAfLu



  • Du hast gleich die Grenzen von WinForms kennengelernt (nämlich Performance und Einsetzbarkeit von Transparenz).

    Auf BackgroundImage würde ich persönlich auch verzichten.

    Das beste wäre, wenn du die Grafiken selber im OnPaint-Ereignis zeichnest (mittels Graphics.DrawImage). Ein gutes Tutorial dazu (wenn auch für C#) gibt es unter [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox).

    Mit WPF wäre dein Projekt wohl einfacher umzusetzen...



  • mmmh blöd ^^

    dank dir auf jedenfall für das tut und den tipp mit dem WPF.

    Werd mir das ganze mal angucken.

    Nur rein interessehalber: Würde das gleiche Problem auch bei C# bestehen?



  • bzgl. WinForms: ja, das gilt für alle .NET-Sprachen.


Anmelden zum Antworten