Simple GDI Class - AeonHack Theme Mod

Nathan

User is banned.
Reputation
0
So I was messing around with the themes and decided that I wanted to make my own. That didn't go so well, lol. So I just ended up modding a small portion of it.

I really didn't do much, just modded some colors, took out the box and added a small border.

The background isn't part of it, for those who aren't sure.
4aFN.png



If you want the source code.
Code:
Imports System.Drawing.Drawing2D

'Creator: Aeonhack
'Date: 7/14/2010
'Site: www.elitevs.net
'Version: 1.0

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, B4 As SolidBrush, B2, B3 As LinearGradientBrush

    Sub New()

        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint, True)
        C1 = Color.FromArgb(34, 34, 34) 'Background
        C2 = Color.Transparent 'Highlight
        C3 = Color.Transparent 'Shadow
        P1 = New Pen(Color.Transparent) 'Border
        P2 = New Pen(C1)
        P3 = New Pen(C2)
        B1 = New SolidBrush(C2)
        B4 = (New SolidBrush(Color.FromArgb(0, 191, 255)))
        Font = New Font("Verdana", 7.0F, FontStyle.Regular)

    End Sub

    Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
        If Height > 0 Then
            R1 = New Rectangle(0, 1, Width, 1)
            R2 = New Rectangle(0, 1, Width, 1)
            B2 = New LinearGradientBrush(R1, C1, C3, 0.0F)
            B3 = New LinearGradientBrush(R2, Color.Transparent, Color.Transparent, 0.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(B)

        G.Clear(C1)

        G.FillRectangle(B2, R1)
        G.DrawString(Text, Font, B4, 4, 3)

        G.DrawRectangle(P2, 1, 2, Width - 3, 23)
        G.DrawRectangle(P3, 1, 1, Width - 3, Height - 3)
        Dim P4 As Pen
        P4 = New Pen(Color.Transparent)
        Dim P5 As Pen
        P5 = New Pen(Color.Transparent)
        G.DrawRectangle(P4, 0, 0, Width - 1, Height - 1)
        G.DrawLine(Pens.Transparent, 0, 1, Width, 12)
        G.DrawLine(Pens.Transparent, 0, 1, Width, 1)
        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(0, 191, 255)) '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(B)

        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(30, 144, 255) '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 = {C2, C3, C3, C2}
        X.Positions = {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 = {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(61, 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(B)

        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(B)

        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
 
Looks pretty good. AeonHack codes it well enough that modifications should be easy. I'd try to get a bit more advanced with it if I were you.
 
Sounds cool. You could get innovative with the idea and make a whole customizable set of GUI controls. Would be pretty fun.
 
Back
Top