Ich habe ein Formular, das transparent ist. (einfach durch Anpassen der Hintergrundfarbe und des Transparenzschlüssels.Zeichnen Opazität auf einem transparenten Formular C#
Beim Versuch, Dinge zu zeichnen, die transparent sind, funktioniert es einfach nicht. Wenn die Alpha-Variable näher an 0 kommt, nähert sich die gezeichnete Farbe einfach dem Original Hintergrundfarbe des Formulars.
SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
SolidBrush superTransBrush = new SolidBrush(Color.FromArgb(10, 0, 0, 255));
diese 3 Bürsten auf einer regelmäßigen Form in den gewünschten Effekt würde zu ziehen. Aber mit ihm auf meinem transparenten Form einfach passt superTransBrush mit meinem TransparencyKey/Hintergrundfarbe und die semiTransBrush ist irgendwo zwischen meiner Wunschfarbe und dem Hintergrund, jedenfalls um diese herum?
Um zu verdeutlichen - wenn Sie Ihre Bg/transparente Farbe auf grün setzen und Ihr Pinsel blau ist, ergibt ein Alpha-Wert von 128 eine Mischung aus Blau und Grün? – Phylyp
Worauf zielen Sie ab: Winforms, WPF, ASP ..? __Always__ tag Ihre Frage richtig! - _Als die Alpha-Variable näher an 0 kommt, nähert sich die gezeichnete Farbe einfach der ursprünglichen Hintergrundfarbe der Form an._ Tatsächlich ist es so; Wie sonst wäre es? Nur die genaue Transparenzschlüsselfarbe__ wird transparent gemacht. Alle anderen Pixel sind nicht. Umsonst. Du könntest versuchen, eine Farbe wie (254,254,254,254) als Schlüsselfarbe auszuwählen, aber dann wird immer noch Weiß in die Mischung eingehen. - Außerdem: Warum hast du 'GDI' statt' GDI +' markiert? – TaW
Sieht aus, als würdest du auf WPF zielen? Nur ein Punkt, der dir nützlich sein könnte. Ich hatte einmal ein Problem mit der Transparenz und das Rätsel, das ich vermisste, war folgendes: Die scheinbare Farbe des Dinges oben ist die Summe dessen, was darunter ist. Die endgültige Farbe, die Sie sehen, ist eher so, als ob Sie farbige Glasstücke übereinander legen würden, anstatt nur eine Ebene über die nächste zu legen. –