29 March 2008, 18:17 | Mesaj No:1 |
Durumu:
Papatyam No :
1196
Üyelik T.:
09 December 2007
Arkadaşları:0
Cinsiyet:
Yaş:34
|
Vb.net de xp buton
Vb.net de xp buton 'VB.net de butonları XP yapmak icin '(form1 in ustundeki button1 icin) 'oncelikle vb.net in drawing clasını import etmeliyiz, 'bunun icin formun en ustune; Imports System.Drawing.Drawing2 'bundan sonra windows form designer generated code ifadesinin 'hemen altına grekli tanımlamaları yapalım; Enum BtnState Disabled Normal Hot Pushed End Enum Const cornerR As Integer = 4 Const cornerD As Integer = (cornerR * 2) 'simdi butonun seklini degistiren paint Sub ını olusturalım; Private Sub PaintXPButton(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _ Handles Button1.Paint 'eger butonun ismi degisik ise yukarda button1 yerine kendi butonunuzun ismini yazmalısınız isterseniz virgul koyup istediginiz diger butonları yazarak aynı efekti verebilirsiniz. Dim btn As Button = CType(sender, Button) Dim backgroundBrush As New SolidBrush(Me.BackColor) Dim bMouseDown As Boolean = (btn.MouseButtons And MouseButtons.Left) <> 0 Dim ptMouse As Point = Me.PointToClient(btn.MousePosition) Dim bMouseInButton As Boolean = btn.Bounds.Contains(ptMouse) 'butonun davranısını belirliyelim Dim state As BtnState If (btn.Enabled = False) Then state = BtnState.Disabled ElseIf (bMouseDown = False) Then If (bMouseInButton = True) Then state = BtnState.Hot Else 'bMouseInButton = False state = BtnState.Normal End If Else 'bMouseDown = True If (bMouseInButton = True) Then state = BtnState.Pushed Else 'bMouseInButton = False state = BtnState.Hot End If End If e.Graphics.FillRectangle(backgroundBrush, e.ClipRectangle) Dim rect As New Rectangle(1, 1, e.ClipRectangle.Width - (cornerR + 1), e.ClipRectangle.Height - (cornerR + 1)) Dim layoutRect As New RectangleF(rect.X, rect.Y, rect.Width, rect.Height) Dim gradNormal As New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(0, 0, 10, e.ClipRectangle.Height), _ SystemColors.ControlLightLight, SystemColors.ActiveCaption, LinearGradientMode.Vertical) Dim gradPushed As New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(0, 0, 10, e.ClipRectangle.Height), _ SystemColors.ActiveCaption, SystemColors.ControlLightLight, LinearGradientMode.Vertical) Dim strFormat As New StringFormat() strFormat.Alignment = StringAlignment.Center strFormat.LineAlignment = StringAlignment.Center Dim pp As GraphicsPath = RoundRectPath(rect, cornerR) If (state <> BtnState.Disabled) Then Dim shadowRect As New Rectangle(0, 0, e.ClipRectangle.Width - 2, e.ClipRectangle.Height - 2) e.Graphics.DrawLine(SystemPens.ControlDarkDark, _ shadowRect.Left, shadowRect.Bottom - (cornerR + 1), _ shadowRect.Left, shadowRect.Top + cornerR) e.Graphics.DrawArc(SystemPens.ControlDarkDark, _ New Rectangle(shadowRect.Left, shadowRect.Top, cornerD, cornerD), 180, 90) e.Graphics.DrawLine(SystemPens.ControlDarkDark, _ shadowRect.Left + cornerR, shadowRect.Top, _ shadowRect.Right - (cornerR + 1), shadowRect.Top e.Graphics.DrawArc(SystemPens.ControlDark, _ New Rectangle(shadowRect.Right - (cornerD + 1), shadowRect.Top, cornerD, cornerD), 270, 90) e.Graphics.DrawLine(SystemPens.ControlLightLight, _ shadowRect.Right - 1, shadowRect.Top + cornerR, _ shadowRect.Right - 1, shadowRect.Bottom - (cornerR + 1)) e.Graphics.DrawArc(SystemPens.ControlLightLight, _ New Rectangle(shadowRect.Right - (cornerD + 1), _ shadowRect.Bottom - (cornerD + 1), cornerD, cornerD), 0, 90) e.Graphics.DrawLine(SystemPens.ControlLightLight, _ shadowRect.Right - (cornerR + 1), shadowRect.Bottom - 1, _ shadowRect.Left + cornerR, shadowRect.Bottom - 1) e.Graphics.DrawArc(SystemPens.ControlLight, _ New Rectangle(shadowRect.Left, shadowRect.Bottom - (cornerD + 1), cornerD, cornerD), 90, 90) End If Select Case state Case BtnState.Disabled e.Graphics.FillPath(SystemBrushes.ControlLight, pp) e.Graphics.DrawPath(SystemPens.ControlDarkDark, pp) e.Graphics.DrawString(btn.Text, btn.Font, SystemBrushes.ControlDarkDark, layoutRect, strFormat) Case BtnState.Hot, BtnState.Normal e.Graphics.FillPath(gradNormal, pp) e.Graphics.DrawPath(SystemPens.ControlDarkDark, pp) If (state = BtnState.Hot) Then e.Graphics.DrawLine(Pens.Orange, rect.Left + 1, rect.Top + 1, rect.Left + 1, rect.Bottom - 1) e.Graphics.DrawLine(Pens.Orange, rect.Right - 1, rect.Top + 1, rect.Right - 1, rect.Bottom - 1) e.Graphics.DrawLine(Pens.PeachPuff, rect.Left + 2, rect.Top + 1, rect.Right - 2, rect.Top + 1) e.Graphics.DrawLine(Pens.DarkOrange, rect.Left + 2, rect.Bottom - 1, rect.Right - 2, rect.Bottom - 1) e.Graphics.DrawRectangle(Pens.Orange, rect.Left + 2, rect.Top + 2, rect.Width - 4, rect.Height - 5) End If e.Graphics.DrawString(btn.Text, btn.Font, SystemBrushes.ActiveCaptionText, layoutRect, strFormat) Case BtnState.Pushed e.Graphics.FillPath(gradPushed, pp) Dim hiRect As Rectangle = rect hiRect.Inflate(-1, -1) e.Graphics.DrawRectangle(SystemPens.ControlLightLi ght, hiRect) e.Graphics.DrawPath(SystemPens.ControlDarkDark, pp) e.Graphics.DrawString(btn.Text, btn.Font, SystemBrushes.ActiveCaptionText, layoutRect, strFormat) End Select pp.Dispose() strFormat.Dispose() backgroundBrush.Dispose() gradNormal.Dispose() gradPushed.Dispose() End Sub 'simdi de butona son seklini bir fonksiyon yardımıyla verelim Public Shared Function RoundRectPath(ByVal rect As Rectangle, ByVal cornerRadius As Integer) As GraphicsPath Dim cornerDiameter As Integer = cornerRadius * 2 Dim pp As New GraphicsPath() pp.AddLine(rect.Left + cornerRadius, rect.Top, rect.Right - cornerRadius, rect.Top) pp.AddArc(New Rectangle(rect.Right - cornerDiameter, rect.Top, cornerDiameter, cornerDiameter), 270, 90) pp.AddLine(rect.Right, rect.Top + cornerRadius, rect.Right, rect.Bottom - cornerRadius) pp.AddArc(New Rectangle(rect.Right - cornerDiameter, rect.Bottom - cornerDiameter, cornerDiameter, cornerDiameter), 0, 90) pp.AddLine(rect.Right - cornerRadius, rect.Bottom, rect.Left + cornerRadius, rect.Bottom) pp.AddArc(New Rectangle(rect.Left, rect.Bottom - cornerDiameter, cornerDiameter, cornerDiameter), 90, 90) pp.AddLine(rect.Left, rect.Bottom - cornerRadius, rect.Left, rect.Top + cornerRadius) pp.AddArc(New Rectangle(rect.Left, rect.Top, cornerDiameter, cornerDiameter), 180, 90) pp.CloseFigure() Return pp End Function |
Bookmarks |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
Tefekküre Davet Köşesi |
|
Papatyam Sosyal Medya Guruplarımıza Katılın |