none
[VS13] Problem mit Transparenz (Sprich: PictureBox & Label Elemente) RRS feed

  • Frage

  • Hallo, erstmal vielen Dank fürs durchlesen und eventuell beantworten. Ich muss hier etwas weiter ausholen, damit ich das Problem auch verständlich erklären kann:

    Ich würde gerne mit einer PictureBox einen begrenzten Background erstellen. Sprich: Ich will kein Background Image für das gesamte Frame verwenden sondern nur für einen Bereich, um das ganze Modular zu halten.

    Um das ganze Stichpunktartig zu erklären: Hintergrundfarbe: schwarz -> (Bereich) Hintergrundbild: Pergamentpapier -> (Auf dem Pergament) ein Label mit transparentem Hintergrund.

    Es soll dann so aussehen, als wenn die Schrift auf dem Pergament steht.

    Problem: Der Hintergrund wird auf dem Label schwarz, wie der wirkliche Background dargestellt, sieht sch*** aus.

    Vermutung: Die Transparenz erbt die Hintergrundfarbe und ist nicht echt Transparent.

    Vielleicht hat ja jemand von euch einen Lösungsvorschlag, ich wäre euch sehr dankbar. Also: Gibt es eine Möglichkeit, ohne den Text auf das Bild zu zeichnen? Wenn es nur so geht, müsste ich 1000 Bilder erstellen, was doch recht unprofessionell wirkt.

    PS: Mein erster Gedanke war: Das Pergamentpapier als gesamten Background zu benutzen, dann eine framefüllende schwarze Imagebox DRAUF zu setzen und jeweils das Pergament wieder als Imagebox an entsprechende Stelle zu setzen. ABER: Dann geht die Struktur verloren!

    Vielen Dank!

    Mittwoch, 13. August 2014 16:48

Antworten

  • Hallo,
    mit der Transparenz unter Windows Forms ist es etwas schwierig. Ich würde dir darum vorschlagen die Texte im Paint-Event der PictureBox zu setzen:

    Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
      Dim xPos = 10, yPos = 160
      e.Graphics.DrawString("Dein Text", SystemFonts.DialogFont, Brushes.Red, xPos, yPos)
    End Sub

    Die so gezeichneten Texte haben einen transparenten Hintergrund. Du hast aber keinen Designer, sondern musst alles von Hand zeichnen.

    Eine andere Möglichkeit besteht darin ein Panel in die Form zu ziehen und ihr das BackgroundImage zuzuweisen. Labels, die in dem Panel liegen und BackColor=Color.Transparent haben, haben auch keine Grafikprobleme.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert QuestionMan88 Mittwoch, 13. August 2014 20:16
    Mittwoch, 13. August 2014 18:29
    Moderator

Alle Antworten

  • Hallo,
    mit der Transparenz unter Windows Forms ist es etwas schwierig. Ich würde dir darum vorschlagen die Texte im Paint-Event der PictureBox zu setzen:

    Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
      Dim xPos = 10, yPos = 160
      e.Graphics.DrawString("Dein Text", SystemFonts.DialogFont, Brushes.Red, xPos, yPos)
    End Sub

    Die so gezeichneten Texte haben einen transparenten Hintergrund. Du hast aber keinen Designer, sondern musst alles von Hand zeichnen.

    Eine andere Möglichkeit besteht darin ein Panel in die Form zu ziehen und ihr das BackgroundImage zuzuweisen. Labels, die in dem Panel liegen und BackColor=Color.Transparent haben, haben auch keine Grafikprobleme.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert QuestionMan88 Mittwoch, 13. August 2014 20:16
    Mittwoch, 13. August 2014 18:29
    Moderator
  • Vielen Dank! Probier ich gleich morgen aus!
    Mittwoch, 13. August 2014 20:15