Transparenz-Problem durch Überlappende PictureBox ist bei C#
Ich bin Anzeige in einem panel PictureBox
überlappen, da jeder PictureBox
verwendet wird
als eine Schicht. Ersten mal eine PictureBox
definiert und Hinzugefügt, um Anzeige-hintergrund-Farbe
ist transparent, und es sind Bilder leer sind.
Das problem ist, das die untere Schicht nicht gesehen werden können, das transparente Bild, zeigt die
panel in den Boden. Davon ausgenommen ist, dass der Boden PictureBox
's Bild zu sehen ist.
Habe ich versucht, es mit anderen Steuerelemente wie label. Das problem konnte nicht gelöst werden 🙁
Dank.
Dies ist ein wenig schwer zu Folgen. Ich denke, wenn Sie erklären, es anders Sie kann bekommen ein paar Antworten.
InformationsquelleAutor Cmptrb | 2009-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil, wenn ich mich richtig erinnere, die Einstellung der Hintergrundfarbe Transparent (der tatsächliche Wert ist null, oder?) nicht wirklich transparent. Was Windows tut, sieht es bei der Kontrolle der übergeordneten container die Hintergrundfarbe und setzt den Kontrollen Hintergrundfarbe.
Können Sie sehen, dieses geschehen, vor allem mit panels. Ohne Inhalt, Platten-set, Transparent sollten Sie sehen hinter Ihnen, richtig? Falsch. Wenn Sie ein panel auf der Oberseite von einem Haufen von, sagen wir, textbox-Steuerelemente und legen Sie die Abdeckung auf Transparent, Sie werden nicht in der Lage, um zu sehen, die Textfelder dahinter.
Statt, um wirkliche Transparenz, haben Sie, um eine überlastung OnPaintBackground für die Steuerung in Frage, im wesentlichen, absolut nichts tun (DONT call-Basis.OnPainBackground!)... Es gibt mehr, als, dass, wahrscheinlich, aber hier ist ein Beispiel einer funktionierenden TransparentPanel Kontrolle, die wir hier benutzen:
Haben wir mit dieser Klasse erfolgreich zu schaffen ist wirklich transparenten Platten, die in vergangenen Windows-Forms-Anwendungen. Wir nutzten es als ein hack zu beheben, der rechten Maustaste Kontext-Menü erscheint oben in der button-Steuerelemente" - problem.
Sie können die obige Klasse in einem control-library-Projekt, auf den Sie verweisen (das ist, was wir tun), oder Sie können auch nur die in Ihrem Projekt direkt ein .cs-Datei. Es wird nicht zeigen, bis in Ihre toolbox, es sei denn, Sie fügen Sie es, wenn. Noch können Sie einer regelmäßigen panel, in Ihrem design-Bereich und öffnen Sie den designer.cs-Datei und manuell ändern Sie das Objekt auf Ihre speziellen TransparentPanel.
public const int WS_EX_TRANSPARENT = 0x20; cp.ExStyle |= WS_EX_TRANSPARENT;
endlich habe ich gefunden was ich wollte, konnte ich nicht finden jede hilfreiche Beitrag über ein transparentes panel über ein anderes Steuerelement. Danke für so einen tollen post
InformationsquelleAutor Sean Hanley
Dies ist mein nehmen auf Sie:
Du solltest etwas mehr Logik für die Positionierung der Bild, wie Sie möchten, und Bearbeiten Sie die OnPaint-Methode entsprechend.
InformationsquelleAutor Rado
Habe ich in der Lage, dies zu tun in VB. Es gibt ein paar tricks. Zunächst müssen Sie zum hinzufügen von Bild-Boxen zueinander. Zweite der Bilder in die Bildrahmen werden PNGs.
Für diese app hatte ich auf display-3 verschiedene Schichten an der Spitze einer hintergrund-Ebene und drehen Sie Sie auf und ab, mit Checkboxen. Wenn es nicht klappt, spielen, um mit, wie Sie speichern Sie Ihre PNGs, es ist eine Art wählerisch.
InformationsquelleAutor dwidel
Sollten Sie tun
Ihr Bild nicht gestreckt
InformationsquelleAutor zee