User Control Button



  • Hallo,

    ich experimentiere gerade an einem User Control rum. Jetzt wollte ich einen eigenen Button erstellen. Hab dem auch ein schönes Muster gegeben. Die Farbe und Muster kann verändert werden. Funktioniert auch super.

    Ich verwende Vista und die Buttons haben ein schönen Glaseffekt, was auch bleiben soll. Aber wenn ich immer mit der Maus über die Taste bewegen schimmert die Taste immer bläulich. Wie kann ich dies ändern? Also wenn ich einen roten Button erstelle soll er nicht bläulich sondern ein anderes Rot haben.

    Hier mein Code von meinem abgeleiteten Button:

    public partial class SimpleStripeButton : Button
        {
            private Color ssb_color1 = Color.LightRed; // first color
            private Color ssb_color2 = Color.Red;  // second color
    
            private int ssb_Transparency = 64; // transparency degree 
            private HatchStyle ssb_HatchStyle = HatchStyle.BackwardDiagonal;
    
            [Category("HatchStyle")]
            [Description("Specifies the color of line 1")]
            public Color LineColor1
            {
                get { return ssb_color1; }
                set { ssb_color1 = value; Invalidate(); }
            }
    
            [Category("HatchStyle")]
            [Description("Specifies the color of line 2")]
            public Color LineColor2
            {
                get { return ssb_color2; }
                set { ssb_color2 = value; Invalidate(); }
            }
    
            [Category("HatchStyle")]
            [Description("Specifies the graphicstyle of the button")]
            public HatchStyle GraphicStyle
            {
                get { return ssb_HatchStyle; }
                set { ssb_HatchStyle = value; Invalidate(); }
            }
    
            [Category("HatchStyle")]
            [Description("Specifies the color transparency. (0-255)")]
            public int Transparency
            {
                get { return ssb_Transparency; }
                set { ssb_Transparency = value; Invalidate(); }
            }
    
            public SimpleStripeButton()
            {
            }
    
            protected override void OnPaint(PaintEventArgs pe)
            {
    
                base.OnPaint(pe);
    
                Color c1 = Color.FromArgb(ssb_Transparency, ssb_color1);
                Color c2 = Color.FromArgb(ssb_Transparency, ssb_color2);
    
                HatchBrush hBrush = new HatchBrush(ssb_HatchStyle, c1, c2);
    
                Rectangle ButtonRectangle = new Rectangle(ClientRectangle.Left + 2, ClientRectangle.Top + 2, ClientRectangle.Right - 4, ClientRectangle.Bottom - 4);
    
                pe.Graphics.FillRectangle(hBrush, ButtonRectangle);
                hBrush.Dispose();
            }
    
        }
    

    Also mit backcolor hab ich es schon versucht, da verschwindet nur der Glaseffekt aber der Button wird nicht rot beim Mouseover

    Danke für die Hilfe.



  • ich hab sowas bisher nur mit wpf gemacht, nie mit forms
    also die theorie besagt das du das mouse over event abfangen musst



  • Meinst Du FlatAppearance.MouseOverBackColor?



  • witte schrieb:

    Meinst Du FlatAppearance.MouseOverBackColor?

    Genau sowas in der Art. Leider ist dies nur im Flatstyle anwendbar und dann gehen die Aeroeffekte verloren. Aber ich Bastle mir einfach selber eine Glasoberfläche zusammen und nehme den Flatstyle.

    Besten Dank nochmals.


Anmelden zum Antworten