Announcement

Collapse
No announcement yet.

Hintergrund einer PictureBox transparent

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hintergrund einer PictureBox transparent

    Hi zusammen,

    VB macht mir mal wieder Schwierigkeiten: Ich möchte bei bestimmten Gelegenheiten ein Bild über Teile der Maske legen, das aber nicht rechteckig ist. Die unterliegende Maske soll also durchscheinen, daher habe ich das Bild als GIF erzeugt und in eine Picture Box gelegt, deren Hintergrundfarbe auf transparent eingetragen ist. Leider bringt die mir aber weiterhin einen weißen Hintergrund.

    In einer ähnlichen Anfrage in diesem Forum wird auf einen C#-Artikel verwiesen, in dem die PaintBackground-Routine überschrieben wird. Da ich in VB aber nur das Paint-Event habe, weiß ich jetzt nicht, wie ich da rankomme.

    Kann mir jemand weiterhelfen? Wie bekomme ich den Hintergrund transparent?

    Gruß
    Martin Dietz

  • #2
    PaintBackground-Routine überschrieben
    Überschreiben heißt immer dass eine Klasse erstellt wird die von einer anderen Klasse erbt und in der "neuen" Klasse die Methode überschrieben wird.

    Konkret heißt das dass du ein Benutzersteuerelement erstellst das von PictureBox erbt.

    mfG Gü

    PS:
    Gibt auch den Link zum anderen Artikel an -> so kann ich nachschauen, selber such ich den Artikel nicht.
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Sorry, der link ist :
      http://blog.norberteder.com/index.ph...y070308-092508


      Ich dachte halt es reicht, wenn ich das Paint-Ereignis dieser speziellen PictureBox abfange, und alles tue was die Paint-Routine normalerweise tun würde, außer den Hintergrund zu zeichnen, oder, wenn das ein eigenes Event wäre, das nur von VisualStudio nicht angezeigt wird, dass ich dieses Event abfange, und nichts tue, dazu müsste ich aber dann wissen, wie das Ereignis heisst. Das OnPaintBackground klang halt danach, ein Event "PaintBackground" existiert aber laut VS nicht.

      Gut, ich habe also eine eigene Klasse TransparentPictureBox geschrieben, die von System.Windows.Forms.PictureBox erbt und habe eine Funktion Protected Overrides Sub OnPaintBackground(pEvent as PaintEventArgs) geschrieben, das nur einen Kommentar enthält, jetzt habe ich aber eine schwarzen Hintergrund statt eines weißen (auch nicht viel besser). Vermutlich liegt das daran, dass ich das Event nicht als bearbeitet setzen kann, aber pEvent hat keine Handled-Eigenschaft die ich auf True setzen könnte, und die Online-Hilfe sagt auch nur
      Erbende Klassen sollten diese Methode überschreiben, um die Anforderung von Fenstern zum Löschen des Hintergrunds zu behandeln. Wenn Sie OnPaintBackground in einer abgeleiteten Klasse überschreiben, ist ein Aufruf von OnPaintBackground der Basisklasse nicht erforderlich. Wenn Sie das Windows-Standardverhalten jedoch nicht verwenden möchten, müssen Sie die Handled-Eigenschaft des Ereignisses auf true festlegen.
      Was genau muss ich denn nun tun, damit der Hintergrund durchscheint?

      Hoffe auf Hilfe
      Martin Dietz

      Comment


      • #4
        Hi,

        http://www.eggheadcafe.com/aspnet_an...st26457799.asp (ganz unten).

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Lange her :-)

          die hier angegebenen Links sind teilweise veraltet und zu den kostenpflichtigen Experts habe ich auch keinen Zugang. Ich habe längere Zeit gesucht und nun scheinbar endlich eine Lösung gefunden, die zum einen funktioniert und zum anderen so einfach ist, dass selbst ich die mit Hilfe des automatischen C# nach VB.NET Converters zum Laufen gebracht habe. Dieser Hinweis soll nur anderen Suchenden die Suche vereinfachen:

          http://www.codeproject.com/KB/dotnet...trols_net.aspx

          Comment

          Working...
          X