Jump to content
raynor009

[GHID][VB.NET]Cum schimbam interfata cu un Class

Recommended Posts

Posted (edited)

Un tutorial scurt si extrem de simplu despre cum putem schimba interfata unui Form cu ajutorul unui Class. Sa incepem:

-Pornim VB si facem un proiect nou ( WindowsFormsApplication)

-Odata ce am facut asta mergem sus la "Project" si adaugam un "Class".

-Dupa ce ati adaugat un nou "Class" stergem tot ce este in el si adaugam urmatorul cod:

Imports System.Drawing.Drawing2D



Class FutureTheme
Inherits Control

Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs)
Dock = DockStyle.Fill
If TypeOf Parent Is Form Then
With DirectCast(Parent, Form)
.FormBorderStyle = 0
.BackColor = C1
.ForeColor = Color.FromArgb(12, 12, 12)
End With
End If
MyBase.OnHandleCreated(e)
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
If New Rectangle(Parent.Location.X, Parent.Location.Y, Width, 22).IntersectsWith(New Rectangle(MousePosition.X, MousePosition.Y, 1, 1)) Then
Capture = False
Dim M As Message = Message.Create(Parent.Handle, 161, New IntPtr(2), IntPtr.Zero)
DefWndProc(M)
End If
MyBase.OnMouseDown(e)
End Sub

Dim G As Graphics, B As Bitmap, R1, R2 As Rectangle
Dim C1, C2, C3 As Color, P1, P2, P3 As Pen, B1 As SolidBrush, B2, B3 As LinearGradientBrush

Sub New()

SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint, True)
C1 = Color.FromArgb(34, 34, 34) 'Background
C2 = Color.FromArgb(49, 49, 49) 'Highlight
C3 = Color.FromArgb(22, 22, 22) 'Shadow
P1 = New Pen(Color.Black) 'Border
P2 = New Pen(C1)
P3 = New Pen(C2)
B1 = New SolidBrush(C2)
Font = New Font("Verdana", 7.0F, FontStyle.Bold)

End Sub

Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
If Height > 0 Then
R1 = New Rectangle(0, 2, Width, 18)
R2 = New Rectangle(0, 21, Width, 10)
B2 = New LinearGradientBrush(R1, C1, C3, 90.0F)
B3 = New LinearGradientBrush(R2, Color.FromArgb(70, 0, 0, 0), Color.Transparent, 90.0F)
Invalidate()
End If
MyBase.OnSizeChanged(e)
End Sub

Protected Overrides Sub OnPaintBackground(ByVal pevent As PaintEventArgs)
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
B = New Bitmap(Width, Height)
G = Graphics.FromImage(

G.Clear(C1)

For I As Integer = 0 To Width + 17 Step 4
G.DrawLine(P1, I, 21, I - 17, 37)
G.DrawLine(P1, I - 1, 21, I - 16, 37)
Next
G.FillRectangle(B3, R2)

G.FillRectangle(B2, R1)
G.DrawString(Text, Font, B1, 5, 5)

G.DrawRectangle(P2, 1, 1, Width - 3, 19)
G.DrawRectangle(P3, 1, 39, Width - 3, Height - 41)

G.DrawRectangle(P1, 0, 0, Width - 1, Height - 1)
G.DrawLine(P1, 0, 21, Width, 21)
G.DrawLine(P1, 0, 38, Width, 38)

e.Graphics.DrawImage(B, 0, 0)
G.Dispose()
B.Dispose()
End Sub

End Class
Class FutureButton
Inherits Control

Dim B As Bitmap, G As Graphics, R1 As Rectangle
Dim C1, C2, C3, C4 As Color, P1, P2, P3, P4 As Pen, B1, B2, B5 As Brush, B3, B4 As LinearGradientBrush

Sub New()
SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint, True)

C1 = Color.FromArgb(34, 34, 34) 'Background
C2 = Color.FromArgb(49, 49, 49) 'Highlight
C3 = Color.FromArgb(39, 39, 39) 'Lesser Highlight
C4 = Color.FromArgb(60, Color.Black)
P1 = New Pen(Color.FromArgb(22, 22, 22)) 'Shadow
P2 = New Pen(Color.FromArgb(20, Color.White))
P3 = New Pen(Color.FromArgb(10, Color.White))
P4 = New Pen(Color.FromArgb(30, Color.Black))
B1 = New SolidBrush(C1)
B2 = New SolidBrush(C3)
B5 = New SolidBrush(Color.FromArgb(12, 12, 12)) 'Text Color
Font = New Font("Verdana", 8.0F)
End Sub

Private State As Integer
Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
State = 0
Invalidate()
End Sub
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
State = 1
Invalidate()
End Sub
Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
State = 1
Invalidate()
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
State = 2
Invalidate()
End Sub

Protected Overrides Sub OnResize(ByVal e As EventArgs)
R1 = New Rectangle(2, 2, Width - 4, 4)
B3 = New LinearGradientBrush(ClientRectangle, C3, C2, 90.0F)
B4 = New LinearGradientBrush(R1, C4, Color.Transparent, 90.0F)
Invalidate()
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
B = New Bitmap(Width, Height)
G = Graphics.FromImage(

G.FillRectangle(B3, ClientRectangle)

Select Case State
Case 0 'Up
G.FillRectangle(B1, 1, 1, Width - 2, Height - 2)
G.DrawLine(P2, 2, 2, Width - 3, 2)
G.DrawLine(P3, 2, Height - 3, Width - 3, Height - 3)
Case 1 'Over
G.FillRectangle(B2, 1, 1, Width - 2, Height - 2)
G.DrawLine(P2, 2, 2, Width - 3, 2)
G.DrawLine(P3, 2, Height - 3, Width - 3, Height - 3)
Case 2 'Down
G.FillRectangle(B2, 1, 1, Width - 2, Height - 2)
G.FillRectangle(B4, R1)
G.DrawLine(P4, 2, 2, 2, Height - 3)
End Select

Dim S As SizeF = G.MeasureString(Text, Font)
G.DrawString(Text, Font, B5, Convert.ToInt32(Width / 2 - S.Width / 2), Convert.ToInt32(Height / 2 - S.Height / 2))

G.DrawRectangle(P1, 1, 1, Width - 3, Height - 3)

e.Graphics.DrawImage(B, 0, 0)
G.Dispose()
B.Dispose()
End Sub

Protected Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
End Sub

End Class
Class FutureProgressBar
Inherits Control

#Region " Properties "
Private _Maximum As Double = 100
Public Property Maximum() As Double
Get
Return _Maximum
End Get
Set(ByVal v As Double)
_Maximum = v
Progress = _Current / v * 100
Invalidate()
End Set
End Property
Private _Current As Double
Public Property Current() As Double
Get
Return _Current
End Get
Set(ByVal v As Double)
_Current = v
Progress = v / _Maximum * 100
Invalidate()
End Set
End Property
Private _Progress As Integer
Public Property Progress() As Double
Get
Return _Progress
End Get
Set(ByVal v As Double)
If v < 0 Then v = 0 Else If v > 100 Then v = 100
_Progress = Convert.ToInt32(v)
_Current = v * 0.01 * _Maximum
If Width > 0 Then UpdateProgress()
Invalidate()
End Set
End Property

Dim C2 As Color = Color.FromArgb(6, 96, 149) 'Dark Color
Public Property Color1() As Color
Get
Return C2
End Get
Set(ByVal v As Color)
C2 = v
UpdateColors()
Invalidate()
End Set
End Property
Dim C3 As Color = Color.FromArgb(70, 167, 220) 'Light color
Public Property Color2() As Color
Get
Return C3
End Get
Set(ByVal v As Color)
C3 = v
UpdateColors()
Invalidate()
End Set
End Property

#End Region

Protected Overrides Sub OnPaintBackground(ByVal pevent As PaintEventArgs)
End Sub

Dim G As Graphics, B As Bitmap, R1, R2 As Rectangle, X As ColorBlend
Dim C1 As Color, P1, P2, P3 As Pen, B1, B2 As LinearGradientBrush, B3 As SolidBrush
Sub New()

C1 = Color.FromArgb(22, 22, 22) 'Background
P1 = New Pen(Color.FromArgb(70, Color.White), 2)
P2 = New Pen(C2)
P3 = New Pen(Color.FromArgb(49, 49, 49)) 'Highlight
B3 = New SolidBrush(Color.FromArgb(100, Color.White))
X = New ColorBlend(4)
X.Colors = New Color() {C2, C3, C3, C2}
X.Positions = New Single() {0.0F, 0.1F, 0.9F, 1.0F}
R2 = New Rectangle(2, 2, 2, 2)
B2 = New LinearGradientBrush(R2, Nothing, Nothing, 180.0F)
B2.InterpolationColors = X

End Sub

Sub UpdateColors()
P2.Color = C2
X.Colors = New Color() {C2, C3, C3, C2}
B2.InterpolationColors = X
End Sub

Protected Overrides Sub OnSizeChanged(ByVal e As System.EventArgs)
R1 = New Rectangle(0, 1, Width, 4)
B1 = New LinearGradientBrush(R1, Color.FromArgb(60, Color.Black), Color.Transparent, 90.0F)
UpdateProgress()
Invalidate()
MyBase.OnSizeChanged(e)
End Sub

Sub UpdateProgress()
If _Progress = 0 Then Return
R2 = New Rectangle(2, 2, Convert.ToInt32((Width - 4) * (_Progress * 0.01)), Height - 4)
B2 = New LinearGradientBrush(R2, Nothing, Nothing, 180.0F)
B2.InterpolationColors = X
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
B = New Bitmap(Width, Height)
G = Graphics.FromImage(

G.Clear(C1)

G.FillRectangle(B1, R1)

If _Progress > 0 Then
G.FillRectangle(B2, R2)

G.FillRectangle(B3, 2, 3, R2.Width, 4)
G.DrawRectangle(P1, 4, 4, R2.Width - 4, Height - 8)

G.DrawRectangle(P2, 2, 2, R2.Width - 1, Height - 5)
End If

G.DrawRectangle(P3, 0, 0, Width - 1, Height - 1)

e.Graphics.DrawImage(B, 0, 0)
G.Dispose()
B.Dispose()
End Sub

End Class
Class FutureSeperator
Inherits Control

Private _Orientation As Orientation
Public Property Orientation() As Orientation
Get
Return _Orientation
End Get
Set(ByVal v As Orientation)
_Orientation = v
UpdateOffset()
Invalidate()
End Set
End Property

Dim G As Graphics, B As Bitmap, I As Integer
Dim C1 As Color, P1, P2 As Pen
Sub New()
SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint, True)
C1 = Color.FromArgb(34, 34, 34) 'Background
P1 = New Pen(Color.FromArgb(22, 22, 22)) 'Shadow
P2 = New Pen(Color.FromArgb(49, 49, 49)) 'Highlight
End Sub

Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
UpdateOffset()
MyBase.OnSizeChanged(e)
End Sub

Sub UpdateOffset()
I = Convert.ToInt32(If(_Orientation = 0, Height / 2 - 1, Width / 2 - 1))
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
B = New Bitmap(Width, Height)
G = Graphics.FromImage(

G.Clear(C1)

If _Orientation = 0 Then
G.DrawLine(P1, 0, I, Width, I)
G.DrawLine(P2, 0, I + 1, Width, I + 1)
Else
G.DrawLine(P2, I, 0, I, Height)
G.DrawLine(P1, I + 1, 0, I + 1, Height)
End If

e.Graphics.DrawImage(B, 0, 0)
G.Dispose()
B.Dispose()
End Sub

Protected Overrides Sub OnPaintBackground(ByVal pevent As PaintEventArgs)
End Sub

End Class

Acuma ca sa avem parte de noile schimbari dam click odata "Start Debugging" sau apasam simplu F5.Odata ce am pornit pentru prima oara programul il inchidem. Acum in "Toolbox" in partea de sus o sa apara o noua categorie cu urmatoarele:

-Pointer

-FutureButton

-FutureProgressbar - La ProgressBar se pot schimba culorile in Color1(Funda) si Color(Cea peste fundal)

-FutureSeperator

-FutureTheme

Inainte sa inchei vreau sa spun ca nu eu am facut acea interfata deci nu imi apartine. Din pacate nu cunosc autorul ei asa ca nu am cui sa dau credite.

Sper sa va fie de folos si bafta la programare.

Edited by raynor009

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...