• Tidak ada hasil yang ditemukan

Aplikasi Porn Blocker Pada Web Browser Berbasis Visual Basic

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Porn Blocker Pada Web Browser Berbasis Visual Basic"

Copied!
78
0
0

Teks penuh

(1)

Listing Program

1.

Form1.vb

Imports System.IO Public Class Form1

Private Declare Function GetForegroundWindow Lib "user32.dll" () As IntPtr

Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As IntPtr, ByRef lpdwProcessID As Integer) As Integer

Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As IntPtr, ByVal WinTitle As String, ByVal MaxLength As Integer) As Integer

Private Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" (ByVal hwnd As IntPtr) As Integer

Public Function killprocess(ByVal processname As String) 'Get list of all running processes

Dim proc() As Process = Process.GetProcesses

'Loop through all processes

For i As Integer = 0 To proc.GetUpperBound(0) If proc(i).ProcessName = processname Then proc(i).Kill()

End If Next

End Function

Public Sub killer()

killprocess("firefox") killprocess("chrome") killprocess("iexplore") killprocess("opera") killprocess("safari") killprocess("flock") End Sub

Private Sub RepoveDuplicate()

For Row As Int16 = 0 To ListBox1.Items.Count - 2

For RowAgain As Int16 = ListBox1.Items.Count - 1 To Row + 1 Step -1

If ListBox1.Items(Row).ToString = ListBox1.Items(RowAgain).ToString Then

ListBox1.Items.RemoveAt(RowAgain) End If

(2)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Try

'—– Get the Handle to the Current Forground Window —– Dim hWnd As IntPtr = GetForegroundWindow()

If hWnd = IntPtr.Zero Then Exit Sub

'—– Find the Length of the Window’s Title —– Dim TitleLength As Integer

TitleLength = GetWindowTextLength(hWnd) '—– Find the Window’s Title —–

Dim WindowTitle As String = StrDup(TitleLength + 1, "*")

GetWindowText(hWnd, WindowTitle, TitleLength + 1) '—– Find the PID of the Application that Owns the Window —–

Dim pid As Integer = 0

GetWindowThreadProcessId(hWnd, pid) If pid = 0 Then Exit Sub

'—– Get the actual PROCESS from the process ID —– Dim proc As Process = Process.GetProcessById(pid) If proc Is Nothing Then Exit Sub

TextBox3.Text = proc.MainWindowTitle RepoveDuplicate()

Catch End Try End Sub

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged

ListBox1.Items.Add(TextBox3.Text) If TextBox3.Text.Contains("sex") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("hardsextube") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("tube8") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

(3)

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("redtube") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("youjizz") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("spankwire") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer()

ElseIf TextBox3.Text.Contains("pornhub") Then

MessageBox.Show("situs dilarang", "situs dilarang", MessageBoxButtons.OK, MessageBoxIcon.Information)

killer() End If

End Sub

Private Sub OriginButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OriginButton1.Click

Timer1.Start()

'mengubah warna tulisan logs history

ListBox1.ForeColor = System.Drawing.Color.Red ListBox1.Items.Add("Monitoring Start...") ListBox1.Items.Add("")

End Sub

Private Sub OriginButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OriginButton2.Click

Timer1.Stop()

'mengubah warna tulisan logs history

ListBox1.ForeColor = System.Drawing.Color.Red ListBox1.Items.Add("Monitoring Stopped..") ListBox1.Items.Add("")

End Sub

Private Sub GraphiteButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GraphiteButton1.Click

' menyembunyikan form Me.Visible = False

'Menampilkan judul untuk Notif ikon

(4)

'Menampilkan Ballontiptext untuk Notif ikon NotifyIcon1.BalloonTipText = "Monitoring here.." 'Notif ikon ditampilkan selama 2 detik

NotifyIcon1.ShowBalloonTip(2) End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Try

'memuat logs history, logs disimpan didrive c Dim items() As String =

File.ReadAllLines("C:\\AI.kaizer") ListBox1.Items.Clear() ' if necessary

ListBox1.Items.AddRange(items) ListBox1.SelectedIndex = 0 Catch ex As System.Exception End Try

End Sub

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

Try

'menyimpan logs history. lokasinya di drive c:\ Dim sw As System.IO.StreamWriter = New

System.IO.StreamWriter("C:\\AI.kaizer")

For Each item As Object In ListBox1.Items sw.WriteLine(item.ToString)

Next

sw.Close()

Catch ex As Exception End Try

End Sub

Private Sub GraphiteButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GraphiteButton2.Click

(5)

Private Sub SecondOriginButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

SecondOriginButton1.Click 'button save result

Using WWW As New SaveFileDialog

WWW.Filter = "(*.txt) |*.txt|(*.*) |*.*"

If WWW.ShowDialog = Windows.Forms.DialogResult.OK Then Using saef As New

System.IO.StreamWriter(WWW.FileName)

For Each item As String In ListBox1.Items saef.Write(item)

Next

saef.Close() End Using

End If End Using End Sub

Private Sub ShowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

ShowToolStripMenuItem.Click 'menampilkan form Me.Visible = True End Sub

Private Sub HideToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

HideToolStripMenuItem.Click 'menyembunyikan form Me.Visible = False

End Sub

Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick

'menampilkan form Me.Visible = True End Sub

Private Sub SaveResultToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

SaveResultToolStripMenuItem.Click 'button save result

Using WWW As New SaveFileDialog

WWW.Filter = "(*.txt) |*.txt|(*.*) |*.*"

(6)

Using saef As New System.IO.StreamWriter(WWW.FileName)

For Each item As String In ListBox1.Items saef.Write(item)

Next

saef.Close() End Using

End If End Using End Sub

Private Sub HideInTrayIconToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

HideInTrayIconToolStripMenuItem.Click ' menyembunyikan form

Me.Visible = False

'Menampilkan judul untuk Notif ikon

NotifyIcon1.BalloonTipTitle = "Porn Blocker" 'Menampilkan Ballontiptext untuk Notif ikon NotifyIcon1.BalloonTipText = "Monitoring here.." 'Notif ikon ditampilkan selama 2 detik

NotifyIcon1.ShowBalloonTip(2) End Sub

Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

ExitToolStripMenuItem.Click 'keluar dari aplikasi Application.Exit()

End Sub

Private Sub StartMonitoringToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartMonitoringToolStripMenuItem.Click

Timer1.Start()

'mengubah warna tulisan logs history

ListBox1.ForeColor = System.Drawing.Color.Red ListBox1.Items.Add("Monitoring Start...") ListBox1.Items.Add("")

End Sub

Private Sub StopMonitoringToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

StopMonitoringToolStripMenuItem.Click Timer1.Stop()

'mengubah warna tulisan logs history

(7)

ListBox1.Items.Add("Monitoring Stopped..") ListBox1.Items.Add("")

End Sub

Private Sub CreditToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

CreditToolStripMenuItem.Click

MessageBox.Show("Nama : Agatangelus Respatio Sibarani Nim : 142406202", "Atas Nama", MessageBoxButtons.OK,

MessageBoxIcon.Information) End Sub

Private Sub FileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

FileToolStripMenuItem.Click End Sub

Private Sub OriginTheme1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OriginTheme1.Click

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

ListBox1.SelectedIndexChanged End Sub

Private Sub OriginGroupBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OriginGroupBox2.Click

End Sub

Private Sub ToolStripStatusLabel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub StatusStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As

System.Windows.Forms.ToolStripItemClickedEventArgs) Handles StatusStrip1.ItemClicked

End Sub End Class

2.

Origin Theme.vb

#Region "ThemeBase"

(8)

Imports System.ComponentModel, System.Windows.Forms Imports System.Runtime.InteropServices

Imports System.Drawing.Imaging '---

'Creator: aeonhack 'Site: elitevs.net 'Created: 08/02/2011 'Changed: 12/06/2011 'Version: 1.5.4 '---

MustInherit Class ThemeContainer154 Inherits ContainerControl

#Region " Initialization "

Protected G As Graphics, B As Bitmap Sub New()

SetStyle(DirectCast(139270, ControlStyles), True) _ImageSize = Size.Empty

Font = New Font("Verdana", 8S) MeasureBitmap = New Bitmap(1, 1)

MeasureGraphics = Graphics.FromImage(MeasureBitmap) DrawRadialPath = New GraphicsPath

InvalidateCustimization() End Sub

Protected NotOverridable Overrides Sub OnHandleCreated(ByVal e As EventArgs)

If DoneCreation Then InitializeMessages() InvalidateCustimization()

ColorHook()

If Not _LockWidth = 0 Then Width = _LockWidth If Not _LockHeight = 0 Then Height = _LockHeight If Not _ControlMode Then MyBase.Dock = DockStyle.Fill Transparent = _Transparent

If _Transparent AndAlso _BackColor Then BackColor = Color.Transparent

MyBase.OnHandleCreated(e) End Sub

Private DoneCreation As Boolean

Protected NotOverridable Overrides Sub OnParentChanged(ByVal e As EventArgs)

MyBase.OnParentChanged(e)

(9)

If Not _ControlMode Then InitializeMessages() If _IsParentForm Then

ParentForm.FormBorderStyle = _BorderStyle ParentForm.TransparencyKey = _TransparencyKey If Not DesignMode Then

AddHandler ParentForm.Shown, AddressOf FormShown

End If End If

Parent.BackColor = BackColor End If

OnCreation()

DoneCreation = True InvalidateTimer() End Sub

#End Region

Private Sub DoAnimation(ByVal i As Boolean) OnAnimation()

If i Then Invalidate() End Sub

Protected NotOverridable Overrides Sub OnPaint(ByVal e As PaintEventArgs)

If Width = 0 OrElse Height = 0 Then Return

If _Transparent AndAlso _ControlMode Then PaintHook()

e.Graphics.DrawImage(B, 0, 0) Else

G = e.Graphics PaintHook() End If

End Sub

Protected Overrides Sub OnHandleDestroyed(ByVal e As EventArgs)

RemoveAnimationCallback(AddressOf DoAnimation) MyBase.OnHandleDestroyed(e)

End Sub

Private HasShown As Boolean

Private Sub FormShown(ByVal sender As Object, ByVal e As EventArgs)

If _ControlMode OrElse HasShown Then Return

If _StartPosition = FormStartPosition.CenterParent OrElse _StartPosition = FormStartPosition.CenterScreen Then

Dim SB As Rectangle = Screen.PrimaryScreen.Bounds Dim CB As Rectangle = ParentForm.Bounds

ParentForm.Location = New Point(SB.Width \ 2 - CB.Width \ 2, SB.Height \ 2 - CB.Width \ 2)

(10)

HasShown = True End Sub

#Region " Size Handling " Private Frame As Rectangle

Protected NotOverridable Overrides Sub OnSizeChanged(ByVal e As EventArgs)

If _Movable AndAlso Not _ControlMode Then

Frame = New Rectangle(7, 7, Width - 14, _Header - 7) End If

InvalidateBitmap() Invalidate()

MyBase.OnSizeChanged(e) End Sub

Protected Overrides Sub SetBoundsCore(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal specified As BoundsSpecified)

If Not _LockWidth = 0 Then width = _LockWidth If Not _LockHeight = 0 Then height = _LockHeight MyBase.SetBoundsCore(x, y, width, height, specified) End Sub

#End Region

#Region " State Handling "

Protected State As MouseState

Private Sub SetState(ByVal current As MouseState) State = current

Invalidate() End Sub

Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs) If Not (_IsParentForm AndAlso ParentForm.WindowState = FormWindowState.Maximized) Then

If _Sizable AndAlso Not _ControlMode Then InvalidateMouse()

End If

MyBase.OnMouseMove(e) End Sub

Protected Overrides Sub OnEnabledChanged(ByVal e As EventArgs) If Enabled Then SetState(MouseState.None) Else

SetState(MouseState.Block)

MyBase.OnEnabledChanged(e) End Sub

Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs) SetState(MouseState.Over)

(11)

Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) SetState(MouseState.Over)

MyBase.OnMouseUp(e) End Sub

Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs) SetState(MouseState.None)

If GetChildAtPoint(PointToClient(MousePosition)) IsNot Nothing Then

If _Sizable AndAlso Not _ControlMode Then Cursor = Cursors.Default

Previous = 0 End If

End If

MyBase.OnMouseLeave(e) End Sub

Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) If e.Button = Windows.Forms.MouseButtons.Left Then

SetState(MouseState.Down)

If Not (_IsParentForm AndAlso ParentForm.WindowState = FormWindowState.Maximized OrElse _ControlMode) Then

If _Movable AndAlso Frame.Contains(e.Location) Then Capture = False

WM_LMBUTTONDOWN = True DefWndProc(Messages(0))

ElseIf _Sizable AndAlso Not Previous = 0 Then Capture = False

WM_LMBUTTONDOWN = True

DefWndProc(Messages(Previous)) End If

End If

MyBase.OnMouseDown(e) End Sub

Private WM_LMBUTTONDOWN As Boolean

Protected Overrides Sub WndProc(ByRef m As Message) MyBase.WndProc(m)

If WM_LMBUTTONDOWN AndAlso m.Msg = 513 Then WM_LMBUTTONDOWN = False

SetState(MouseState.Over)

If Not _SmartBounds Then Return

If IsParentMdi Then

CorrectBounds(New Rectangle(Point.Empty, Parent.Parent.Size))

Else

CorrectBounds(Screen.FromControl(Parent).WorkingArea) End If

(12)

Private GetIndexPoint As Point Private B1, B2, B3, B4 As Boolean Private Function GetIndex() As Integer

GetIndexPoint = PointToClient(MousePosition) B1 = GetIndexPoint.X < 7

B2 = GetIndexPoint.X > Width - 7 B3 = GetIndexPoint.Y < 7

B4 = GetIndexPoint.Y > Height - 7 If B1 AndAlso B3 Then Return 4 If B1 AndAlso B4 Then Return 7 If B2 AndAlso B3 Then Return 5 If B2 AndAlso B4 Then Return 8 If B1 Then Return 1

If B2 Then Return 2 If B3 Then Return 3 If B4 Then Return 6 Return 0

End Function

Private Current, Previous As Integer Private Sub InvalidateMouse()

Current = GetIndex()

If Current = Previous Then Return Previous = Current

Select Case Previous Case 0

Cursor = Cursors.Default Case 1, 2

Cursor = Cursors.SizeWE Case 3, 6

Cursor = Cursors.SizeNS Case 4, 8

Cursor = Cursors.SizeNWSE Case 5, 7

Cursor = Cursors.SizeNESW End Select

End Sub

Private Messages(8) As Message Private Sub InitializeMessages()

Messages(0) = Message.Create(Parent.Handle, 161, New IntPtr(2), IntPtr.Zero)

For I As Integer = 1 To 8

Messages(I) = Message.Create(Parent.Handle, 161, New IntPtr(I + 9), IntPtr.Zero)

Next End Sub

Private Sub CorrectBounds(ByVal bounds As Rectangle) If Parent.Width > bounds.Width Then Parent.Width = bounds.Width

If Parent.Height > bounds.Height Then Parent.Height = bounds.Height

(13)

If X < bounds.X Then X = bounds.X If Y < bounds.Y Then Y = bounds.Y

Dim Width As Integer = bounds.X + bounds.Width Dim Height As Integer = bounds.Y + bounds.Height

If X + Parent.Width > Width Then X = Width - Parent.Width If Y + Parent.Height > Height Then Y = Height -

Parent.Height

Parent.Location = New Point(X, Y) End Sub

#End Region

#Region " Base Properties "

Overrides Property Dock As DockStyle Get

Return MyBase.Dock End Get

Set(ByVal value As DockStyle)

If Not _ControlMode Then Return MyBase.Dock = value

End Set End Property

Private _BackColor As Boolean <Category("Misc")> _

Overrides Property BackColor() As Color Get

Return MyBase.BackColor End Get

Set(ByVal value As Color)

If value = MyBase.BackColor Then Return

If Not IsHandleCreated AndAlso _ControlMode AndAlso value = Color.Transparent Then

_BackColor = True Return

End If

MyBase.BackColor = value If Parent IsNot Nothing Then

If Not _ControlMode Then Parent.BackColor = value ColorHook()

End If End Set End Property

Overrides Property MinimumSize As Size Get

Return MyBase.MinimumSize End Get

Set(ByVal value As Size)

MyBase.MinimumSize = value

(14)

End Set End Property

Overrides Property MaximumSize As Size Get

Return MyBase.MaximumSize End Get

Set(ByVal value As Size)

MyBase.MaximumSize = value

If Parent IsNot Nothing Then Parent.MaximumSize = value

End Set End Property

Overrides Property Text() As String Get

Return MyBase.Text End Get

Set(ByVal value As String) MyBase.Text = value Invalidate()

End Set End Property

Overrides Property Font() As Font Get

Return MyBase.Font End Get

Set(ByVal value As Font) MyBase.Font = value Invalidate()

End Set End Property

<Browsable(False),

EditorBrowsable(EditorBrowsableState.Never),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property ForeColor() As Color Get

Return Color.Empty End Get

Set(ByVal value As Color) End Set

End Property

<Browsable(False),

EditorBrowsable(EditorBrowsableState.Never),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property BackgroundImage() As Image Get

Return Nothing End Get

Set(ByVal value As Image) End Set

End Property

<Browsable(False),

(15)

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property BackgroundImageLayout() As ImageLayout Get

Return ImageLayout.None End Get

Set(ByVal value As ImageLayout) End Set

End Property #End Region

#Region " Public Properties "

Private _SmartBounds As Boolean = True Property SmartBounds() As Boolean Get

Return _SmartBounds End Get

Set(ByVal value As Boolean) _SmartBounds = value End Set

End Property

Private _Movable As Boolean = True Property Movable() As Boolean Get

Return _Movable End Get

Set(ByVal value As Boolean) _Movable = value

End Set End Property

Private _Sizable As Boolean = True Property Sizable() As Boolean Get

Return _Sizable End Get

Set(ByVal value As Boolean) _Sizable = value

End Set End Property

Private _TransparencyKey As Color Property TransparencyKey() As Color Get

If _IsParentForm AndAlso Not _ControlMode Then Return ParentForm.TransparencyKey Else Return _TransparencyKey

End Get

Set(ByVal value As Color)

If value = _TransparencyKey Then Return _TransparencyKey = value

If _IsParentForm AndAlso Not _ControlMode Then ParentForm.TransparencyKey = value

ColorHook() End If

(16)

End Property

Private _BorderStyle As FormBorderStyle Property BorderStyle() As FormBorderStyle Get

If _IsParentForm AndAlso Not _ControlMode Then Return ParentForm.FormBorderStyle Else Return _BorderStyle

End Get

Set(ByVal value As FormBorderStyle) _BorderStyle = value

If _IsParentForm AndAlso Not _ControlMode Then ParentForm.FormBorderStyle = value

If Not value = FormBorderStyle.None Then Movable = False

Sizable = False End If

End If End Set End Property

Private _StartPosition As FormStartPosition Property StartPosition As FormStartPosition Get

If _IsParentForm AndAlso Not _ControlMode Then Return ParentForm.StartPosition Else Return _StartPosition

End Get

Set(ByVal value As FormStartPosition) _StartPosition = value

If _IsParentForm AndAlso Not _ControlMode Then ParentForm.StartPosition = value

End If End Set End Property

Private _NoRounding As Boolean Property NoRounding() As Boolean Get

Return _NoRounding End Get

Set(ByVal v As Boolean) _NoRounding = v Invalidate() End Set

End Property

Private _Image As Image Property Image() As Image Get

Return _Image End Get

Set(ByVal value As Image)

If value Is Nothing Then _ImageSize = Size.Empty Else _ImageSize = value.Size

(17)

End Set End Property

Private Items As New Dictionary(Of String, Color) Property Colors() As Bloom()

Get

Dim T As New List(Of Bloom)

Dim E As Dictionary(Of String, Color).Enumerator = Items.GetEnumerator

While E.MoveNext

T.Add(New Bloom(E.Current.Key, E.Current.Value)) End While

Return T.ToArray End Get

Set(ByVal value As Bloom()) For Each B As Bloom In value

If Items.ContainsKey(B.Name) Then Items(B.Name) = B.Value

Next

InvalidateCustimization() ColorHook()

Invalidate() End Set

End Property

Private _Customization As String Property Customization() As String Get

Return _Customization End Get

Set(ByVal value As String)

If value = _Customization Then Return Dim Data As Byte()

Dim Items As Bloom() = Colors Try

Data = Convert.FromBase64String(value) For I As Integer = 0 To Items.Length - 1 Items(I).Value =

Color.FromArgb(BitConverter.ToInt32(Data, I * 4)) Next

Catch Return End Try

_Customization = value Colors = Items

ColorHook() Invalidate() End Set

End Property

(18)

Get

Return _Transparent End Get

Set(ByVal value As Boolean) _Transparent = value

If Not (IsHandleCreated OrElse _ControlMode) Then Return

If Not value AndAlso Not BackColor.A = 255 Then Throw New Exception("Unable to change value to false while a transparent BackColor is in use.")

End If

SetStyle(ControlStyles.Opaque, Not value)

SetStyle(ControlStyles.SupportsTransparentBackColor, value)

InvalidateBitmap() Invalidate()

End Set End Property #End Region

#Region " Private Properties " Private _ImageSize As Size

Protected ReadOnly Property ImageSize() As Size Get

Return _ImageSize End Get

End Property

Private _IsParentForm As Boolean

Protected ReadOnly Property IsParentForm As Boolean Get

Return _IsParentForm End Get

End Property

Protected ReadOnly Property IsParentMdi As Boolean Get

If Parent Is Nothing Then Return False Return Parent.Parent IsNot Nothing End Get

End Property

Private _LockWidth As Integer

Protected Property LockWidth() As Integer Get

Return _LockWidth End Get

Set(ByVal value As Integer) _LockWidth = value

If Not LockWidth = 0 AndAlso IsHandleCreated Then Width = LockWidth

(19)

Private _LockHeight As Integer

Protected Property LockHeight() As Integer Get

Return _LockHeight End Get

Set(ByVal value As Integer) _LockHeight = value

If Not LockHeight = 0 AndAlso IsHandleCreated Then Height = LockHeight

End Set End Property

Private _Header As Integer = 24

Protected Property Header() As Integer Get

Return _Header End Get

Set(ByVal v As Integer) _Header = v

If Not _ControlMode Then

Frame = New Rectangle(7, 7, Width - 14, v - 7) Invalidate()

End If End Set End Property

Private _ControlMode As Boolean

Protected Property ControlMode() As Boolean Get

Return _ControlMode End Get

Set(ByVal v As Boolean) _ControlMode = v

Transparent = _Transparent

If _Transparent AndAlso _BackColor Then BackColor = Color.Transparent

InvalidateBitmap() Invalidate()

End Set End Property

Private _IsAnimated As Boolean

Protected Property IsAnimated() As Boolean Get

Return _IsAnimated End Get

Set(ByVal value As Boolean) _IsAnimated = value InvalidateTimer() End Set

End Property #End Region

(20)

Protected Function GetPen(ByVal name As String) As Pen Return New Pen(Items(name))

End Function

Protected Function GetPen(ByVal name As String, ByVal width As Single) As Pen

Return New Pen(Items(name), width) End Function

Protected Function GetBrush(ByVal name As String) As SolidBrush

Return New SolidBrush(Items(name)) End Function

Protected Function GetColor(ByVal name As String) As Color Return Items(name)

End Function

Protected Sub SetColor(ByVal name As String, ByVal value As Color)

If Items.ContainsKey(name) Then Items(name) = value Else Items.Add(name, value)

End Sub

Protected Sub SetColor(ByVal name As String, ByVal r As Byte, ByVal g As Byte, ByVal b As Byte)

SetColor(name, Color.FromArgb(r, g, b)) End Sub

Protected Sub SetColor(ByVal name As String, ByVal a As Byte, ByVal r As Byte, ByVal g As Byte, ByVal b As Byte)

SetColor(name, Color.FromArgb(a, r, g, b)) End Sub

Protected Sub SetColor(ByVal name As String, ByVal a As Byte, ByVal value As Color)

SetColor(name, Color.FromArgb(a, value)) End Sub

Private Sub InvalidateBitmap()

If _Transparent AndAlso _ControlMode Then If Width = 0 OrElse Height = 0 Then Return B = New Bitmap(Width, Height,

PixelFormat.Format32bppPArgb)

G = Graphics.FromImage(B) Else

G = Nothing B = Nothing End If

End Sub

Private Sub InvalidateCustimization()

Dim M As New MemoryStream(Items.Count * 4) For Each B As Bloom In Colors

M.Write(BitConverter.GetBytes(B.Value.ToArgb), 0, 4) Next

M.Close()

(21)

Private Sub InvalidateTimer()

If DesignMode OrElse Not DoneCreation Then Return If _IsAnimated Then

AddAnimationCallback(AddressOf DoAnimation) Else

RemoveAnimationCallback(AddressOf DoAnimation) End If

End Sub #End Region

#Region " User Hooks "

Protected MustOverride Sub ColorHook() Protected MustOverride Sub PaintHook() Protected Overridable Sub OnCreation() End Sub

Protected Overridable Sub OnAnimation() End Sub

#End Region

#Region " Offset "

Private OffsetReturnRectangle As Rectangle

Protected Function Offset(ByVal r As Rectangle, ByVal amount As Integer) As Rectangle

OffsetReturnRectangle = New Rectangle(r.X + amount, r.Y + amount, r.Width - (amount * 2), r.Height - (amount * 2))

Return OffsetReturnRectangle End Function

Private OffsetReturnSize As Size

Protected Function Offset(ByVal s As Size, ByVal amount As Integer) As Size

OffsetReturnSize = New Size(s.Width + amount, s.Height + amount)

Return OffsetReturnSize End Function

Private OffsetReturnPoint As Point

Protected Function Offset(ByVal p As Point, ByVal amount As Integer) As Point

OffsetReturnPoint = New Point(p.X + amount, p.Y + amount) Return OffsetReturnPoint

End Function #End Region

#Region " Center "

(22)

Protected Function Center(ByVal p As Rectangle, ByVal c As Rectangle) As Point

CenterReturn = New Point((p.Width \ 2 - c.Width \ 2) + p.X + c.X, (p.Height \ 2 - c.Height \ 2) + p.Y + c.Y)

Return CenterReturn End Function

Protected Function Center(ByVal p As Rectangle, ByVal c As Size) As Point

CenterReturn = New Point((p.Width \ 2 - c.Width \ 2) + p.X, (p.Height \ 2 - c.Height \ 2) + p.Y)

Return CenterReturn End Function

Protected Function Center(ByVal child As Rectangle) As Point Return Center(Width, Height, child.Width, child.Height) End Function

Protected Function Center(ByVal child As Size) As Point Return Center(Width, Height, child.Width, child.Height) End Function

Protected Function Center(ByVal childWidth As Integer, ByVal childHeight As Integer) As Point

Return Center(Width, Height, childWidth, childHeight) End Function

Protected Function Center(ByVal p As Size, ByVal c As Size) As Point

Return Center(p.Width, p.Height, c.Width, c.Height) End Function

Protected Function Center(ByVal pWidth As Integer, ByVal pHeight As Integer, ByVal cWidth As Integer, ByVal cHeight As Integer) As Point

CenterReturn = New Point(pWidth \ 2 - cWidth \ 2, pHeight \ 2 - cHeight \ 2)

Return CenterReturn End Function

#End Region

#Region " Measure "

Private MeasureBitmap As Bitmap Private MeasureGraphics As Graphics Protected Function Measure() As Size SyncLock MeasureGraphics

Return MeasureGraphics.MeasureString(Text, Font, Width).ToSize

End SyncLock End Function

Protected Function Measure(ByVal text As String) As Size SyncLock MeasureGraphics

Return MeasureGraphics.MeasureString(text, Font, Width).ToSize

(23)

#Region " DrawPixel "

Private DrawPixelBrush As SolidBrush

Protected Sub DrawPixel(ByVal c1 As Color, ByVal x As Integer, ByVal y As Integer)

If _Transparent Then B.SetPixel(x, y, c1) Else

DrawPixelBrush = New SolidBrush(c1)

G.FillRectangle(DrawPixelBrush, x, y, 1, 1) End If

End Sub #End Region

#Region " DrawCorners "

Private DrawCornersBrush As SolidBrush

Protected Sub DrawCorners(ByVal c1 As Color, ByVal offset As Integer)

DrawCorners(c1, 0, 0, Width, Height, offset) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal r1 As Rectangle, ByVal offset As Integer)

DrawCorners(c1, r1.X, r1.Y, r1.Width, r1.Height, offset) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal x As

Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal offset As Integer)

DrawCorners(c1, x + offset, y + offset, width - (offset * 2), height - (offset * 2))

End Sub

Protected Sub DrawCorners(ByVal c1 As Color) DrawCorners(c1, 0, 0, Width, Height) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal r1 As Rectangle)

DrawCorners(c1, r1.X, r1.Y, r1.Width, r1.Height) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal x As

Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

If _NoRounding Then Return If _Transparent Then

B.SetPixel(x, y, c1)

B.SetPixel(x + (width - 1), y, c1) B.SetPixel(x, y + (height - 1), c1)

B.SetPixel(x + (width - 1), y + (height - 1), c1) Else

DrawCornersBrush = New SolidBrush(c1)

G.FillRectangle(DrawCornersBrush, x, y, 1, 1)

(24)

G.FillRectangle(DrawCornersBrush, x, y + (height - 1), 1, 1)

G.FillRectangle(DrawCornersBrush, x + (width - 1), y + (height - 1), 1, 1)

End If End Sub #End Region

#Region " DrawBorders "

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal offset As Integer)

DrawBorders(p1, 0, 0, Width, Height, offset) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal r As Rectangle, ByVal offset As Integer)

DrawBorders(p1, r.X, r.Y, r.Width, r.Height, offset) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer, ByVal offset As Integer)

DrawBorders(p1, x + offset, y + offset, width - (offset * 2), height - (offset * 2))

End Sub

Protected Sub DrawBorders(ByVal p1 As Pen) DrawBorders(p1, 0, 0, Width, Height) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal r As Rectangle)

DrawBorders(p1, r.X, r.Y, r.Width, r.Height) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer)

G.DrawRectangle(p1, x, y, width - 1, height - 1) End Sub

#End Region

#Region " DrawText "

Private DrawTextPoint As Point Private DrawTextSize As Size

Protected Sub DrawText(ByVal b1 As Brush, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) DrawText(b1, Text, a, x, y)

End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal text As

String, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer)

If text.Length = 0 Then Return DrawTextSize = Measure(text)

(25)

Select Case a

Case HorizontalAlignment.Left

G.DrawString(text, Font, b1, x, DrawTextPoint.Y + y)

Case HorizontalAlignment.Center

G.DrawString(text, Font, b1, DrawTextPoint.X + x, DrawTextPoint.Y + y)

Case HorizontalAlignment.Right

G.DrawString(text, Font, b1, Width - DrawTextSize.Width - x, DrawTextPoint.Y + y)

End Select End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal p1 As Point) If Text.Length = 0 Then Return

G.DrawString(Text, Font, b1, p1) End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal x As Integer, ByVal y As Integer)

If Text.Length = 0 Then Return G.DrawString(Text, Font, b1, x, y) End Sub

#End Region

#Region " DrawImage "

Private DrawImagePoint As Point

Protected Sub DrawImage(ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer)

DrawImage(_Image, a, x, y) End Sub

Protected Sub DrawImage(ByVal image As Image, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) If image Is Nothing Then Return

DrawImagePoint = New Point(Width \ 2 - image.Width \ 2, Header \ 2 - image.Height \ 2)

Select Case a

Case HorizontalAlignment.Left

G.DrawImage(image, x, DrawImagePoint.Y + y, image.Width, image.Height)

Case HorizontalAlignment.Center

G.DrawImage(image, DrawImagePoint.X + x, DrawImagePoint.Y + y, image.Width, image.Height)

Case HorizontalAlignment.Right

G.DrawImage(image, Width - image.Width - x, DrawImagePoint.Y + y, image.Width, image.Height)

End Select End Sub

Protected Sub DrawImage(ByVal p1 As Point) DrawImage(_Image, p1.X, p1.Y)

End Sub

Protected Sub DrawImage(ByVal x As Integer, ByVal y As Integer)

(26)

Protected Sub DrawImage(ByVal image As Image, ByVal p1 As Point)

DrawImage(image, p1.X, p1.Y) End Sub

Protected Sub DrawImage(ByVal image As Image, ByVal x As Integer, ByVal y As Integer)

If image Is Nothing Then Return

G.DrawImage(image, x, y, image.Width, image.Height) End Sub

#End Region

#Region " DrawGradient "

Private DrawGradientBrush As LinearGradientBrush Private DrawGradientRectangle As Rectangle

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(blend, DrawGradientRectangle)

End Sub

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(blend, DrawGradientRectangle, angle)

End Sub

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal r As Rectangle)

DrawGradientBrush = New LinearGradientBrush(r, Color.Empty, Color.Empty, 90.0F)

DrawGradientBrush.InterpolationColors = blend G.FillRectangle(DrawGradientBrush, r)

End Sub

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal r As Rectangle, ByVal angle As Single)

DrawGradientBrush = New LinearGradientBrush(r, Color.Empty, Color.Empty, angle)

DrawGradientBrush.InterpolationColors = blend G.FillRectangle(DrawGradientBrush, r)

End Sub

Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(c1, c2, DrawGradientRectangle)

End Sub

Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(c1, c2, DrawGradientRectangle, angle)

(27)

Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal r As Rectangle)

DrawGradientBrush = New LinearGradientBrush(r, c1, c2, 90.0F)

G.FillRectangle(DrawGradientBrush, r) End Sub

Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal r As Rectangle, ByVal angle As Single)

DrawGradientBrush = New LinearGradientBrush(r, c1, c2, angle)

G.FillRectangle(DrawGradientBrush, r) End Sub

#End Region

#Region " DrawRadial "

Private DrawRadialPath As GraphicsPath

Private DrawRadialBrush1 As PathGradientBrush Private DrawRadialBrush2 As LinearGradientBrush Private DrawRadialRectangle As Rectangle

Sub DrawRadial(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer)

DrawRadialRectangle = New Rectangle(x, y, width, height) DrawRadial(blend, DrawRadialRectangle, width \ 2, height \ 2)

End Sub

Sub DrawRadial(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer, ByVal center As Point)

DrawRadialRectangle = New Rectangle(x, y, width, height) DrawRadial(blend, DrawRadialRectangle, center.X, center.Y) End Sub

Sub DrawRadial(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer, ByVal cx As Integer, ByVal cy As Integer)

DrawRadialRectangle = New Rectangle(x, y, width, height) DrawRadial(blend, DrawRadialRectangle, cx, cy)

End Sub

Sub DrawRadial(ByVal blend As ColorBlend, ByVal r As Rectangle)

DrawRadial(blend, r, r.Width \ 2, r.Height \ 2) End Sub

Sub DrawRadial(ByVal blend As ColorBlend, ByVal r As Rectangle, ByVal center As Point)

DrawRadial(blend, r, center.X, center.Y) End Sub

Sub DrawRadial(ByVal blend As ColorBlend, ByVal r As Rectangle, ByVal cx As Integer, ByVal cy As Integer) DrawRadialPath.Reset()

DrawRadialPath.AddEllipse(r.X, r.Y, r.Width - 1, r.Height - 1)

(28)

DrawRadialBrush1.CenterPoint = New Point(r.X + cx, r.Y + cy)

DrawRadialBrush1.InterpolationColors = blend If G.SmoothingMode = SmoothingMode.AntiAlias Then G.FillEllipse(DrawRadialBrush1, r.X + 1, r.Y + 1, r.Width - 3, r.Height - 3)

Else

G.FillEllipse(DrawRadialBrush1, r) End If

End Sub

Protected Sub DrawRadial(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

DrawRadialRectangle = New Rectangle(x, y, width, height) DrawRadial(c1, c2, DrawGradientRectangle)

End Sub

Protected Sub DrawRadial(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single)

DrawRadialRectangle = New Rectangle(x, y, width, height) DrawRadial(c1, c2, DrawGradientRectangle, angle)

End Sub

Protected Sub DrawRadial(ByVal c1 As Color, ByVal c2 As Color, ByVal r As Rectangle)

DrawRadialBrush2 = New LinearGradientBrush(r, c1, c2, 90.0F)

G.FillRectangle(DrawGradientBrush, r) End Sub

Protected Sub DrawRadial(ByVal c1 As Color, ByVal c2 As Color, ByVal r As Rectangle, ByVal angle As Single)

DrawRadialBrush2 = New LinearGradientBrush(r, c1, c2, angle)

G.FillEllipse(DrawGradientBrush, r) End Sub

#End Region

#Region " CreateRound "

Private CreateRoundPath As GraphicsPath Private CreateRoundRectangle As Rectangle

Function CreateRound(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal slope As Integer) As GraphicsPath

CreateRoundRectangle = New Rectangle(x, y, width, height) Return CreateRound(CreateRoundRectangle, slope)

End Function

Function CreateRound(ByVal r As Rectangle, ByVal slope As Integer) As GraphicsPath

(29)

CreateRoundPath.AddArc(r.Right - slope, r.Y, slope, slope, 270.0F, 90.0F)

CreateRoundPath.AddArc(r.Right - slope, r.Bottom - slope, slope, slope, 0.0F, 90.0F)

CreateRoundPath.AddArc(r.X, r.Bottom - slope, slope, slope, 90.0F, 90.0F)

CreateRoundPath.CloseFigure() Return CreateRoundPath

End Function #End Region End Class

MustInherit Class ThemeControl154 Inherits Control

#Region " Initialization "

Protected G As Graphics, B As Bitmap Sub New()

SetStyle(DirectCast(139270, ControlStyles), True) _ImageSize = Size.Empty

Font = New Font("Verdana", 8S) MeasureBitmap = New Bitmap(1, 1)

MeasureGraphics = Graphics.FromImage(MeasureBitmap) DrawRadialPath = New GraphicsPath

InvalidateCustimization() 'Remove? End Sub

Protected NotOverridable Overrides Sub OnHandleCreated(ByVal e As EventArgs)

InvalidateCustimization() ColorHook()

If Not _LockWidth = 0 Then Width = _LockWidth If Not _LockHeight = 0 Then Height = _LockHeight Transparent = _Transparent

If _Transparent AndAlso _BackColor Then BackColor = Color.Transparent

MyBase.OnHandleCreated(e) End Sub

Private DoneCreation As Boolean

Protected NotOverridable Overrides Sub OnParentChanged(ByVal e As EventArgs)

If Parent IsNot Nothing Then OnCreation()

(30)

MyBase.OnParentChanged(e) End Sub

#End Region

Private Sub DoAnimation(ByVal i As Boolean) OnAnimation()

If i Then Invalidate() End Sub

Protected NotOverridable Overrides Sub OnPaint(ByVal e As PaintEventArgs)

If Width = 0 OrElse Height = 0 Then Return If _Transparent Then

PaintHook()

e.Graphics.DrawImage(B, 0, 0) Else

G = e.Graphics PaintHook() End If

End Sub

Protected Overrides Sub OnHandleDestroyed(ByVal e As EventArgs)

RemoveAnimationCallback(AddressOf DoAnimation) MyBase.OnHandleDestroyed(e)

End Sub

#Region " Size Handling "

Protected NotOverridable Overrides Sub OnSizeChanged(ByVal e As EventArgs)

If _Transparent Then InvalidateBitmap() End If

Invalidate()

MyBase.OnSizeChanged(e) End Sub

Protected Overrides Sub SetBoundsCore(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal specified As BoundsSpecified)

If Not _LockWidth = 0 Then width = _LockWidth If Not _LockHeight = 0 Then height = _LockHeight MyBase.SetBoundsCore(x, y, width, height, specified) End Sub

#End Region

#Region " State Handling "

Private InPosition As Boolean

Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs) InPosition = True

(31)

End Sub

Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) If InPosition Then SetState(MouseState.Over)

MyBase.OnMouseUp(e) End Sub

Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) If e.Button = Windows.Forms.MouseButtons.Left Then

SetState(MouseState.Down) MyBase.OnMouseDown(e) End Sub

Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs) InPosition = False

SetState(MouseState.None) MyBase.OnMouseLeave(e) End Sub

Protected Overrides Sub OnEnabledChanged(ByVal e As EventArgs) If Enabled Then SetState(MouseState.None) Else

SetState(MouseState.Block)

MyBase.OnEnabledChanged(e) End Sub

Protected State As MouseState

Private Sub SetState(ByVal current As MouseState) State = current

Invalidate() End Sub

#End Region

#Region " Base Properties " <Browsable(False),

EditorBrowsable(EditorBrowsableState.Never),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property ForeColor() As Color Get

Return Color.Empty End Get

Set(ByVal value As Color) End Set

End Property

<Browsable(False),

EditorBrowsable(EditorBrowsableState.Never),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property BackgroundImage() As Image Get

Return Nothing End Get

Set(ByVal value As Image) End Set

(32)

<Browsable(False),

EditorBrowsable(EditorBrowsableState.Never),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hi dden)> _

Overrides Property BackgroundImageLayout() As ImageLayout Get

Return ImageLayout.None End Get

Set(ByVal value As ImageLayout) End Set

End Property

Overrides Property Text() As String Get

Return MyBase.Text End Get

Set(ByVal value As String) MyBase.Text = value Invalidate()

End Set End Property

Overrides Property Font() As Font Get

Return MyBase.Font End Get

Set(ByVal value As Font) MyBase.Font = value Invalidate()

End Set End Property

Private _BackColor As Boolean <Category("Misc")> _

Overrides Property BackColor() As Color Get

Return MyBase.BackColor End Get

Set(ByVal value As Color)

If Not IsHandleCreated AndAlso value = Color.Transparent Then

_BackColor = True Return

End If

MyBase.BackColor = value

If Parent IsNot Nothing Then ColorHook() End Set

End Property

#End Region

#Region " Public Properties " Private _NoRounding As Boolean Property NoRounding() As Boolean Get

Return _NoRounding End Get

(33)

_NoRounding = v Invalidate() End Set

End Property

Private _Image As Image Property Image() As Image Get

Return _Image End Get

Set(ByVal value As Image) If value Is Nothing Then _ImageSize = Size.Empty Else

_ImageSize = value.Size End If

_Image = value Invalidate() End Set

End Property

Private _Transparent As Boolean Property Transparent() As Boolean Get

Return _Transparent End Get

Set(ByVal value As Boolean) _Transparent = value

If Not IsHandleCreated Then Return

If Not value AndAlso Not BackColor.A = 255 Then Throw New Exception("Unable to change value to false while a transparent BackColor is in use.")

End If

SetStyle(ControlStyles.Opaque, Not value)

SetStyle(ControlStyles.SupportsTransparentBackColor, value)

If value Then InvalidateBitmap() Else B = Nothing Invalidate()

End Set End Property

Private Items As New Dictionary(Of String, Color) Property Colors() As Bloom()

Get

Dim T As New List(Of Bloom)

Dim E As Dictionary(Of String, Color).Enumerator = Items.GetEnumerator

While E.MoveNext

T.Add(New Bloom(E.Current.Key, E.Current.Value)) End While

Return T.ToArray End Get

(34)

For Each B As Bloom In value

If Items.ContainsKey(B.Name) Then Items(B.Name) = B.Value

Next

InvalidateCustimization() ColorHook()

Invalidate() End Set

End Property

Private _Customization As String Property Customization() As String Get

Return _Customization End Get

Set(ByVal value As String)

If value = _Customization Then Return Dim Data As Byte()

Dim Items As Bloom() = Colors Try

Data = Convert.FromBase64String(value) For I As Integer = 0 To Items.Length - 1 Items(I).Value =

Color.FromArgb(BitConverter.ToInt32(Data, I * 4)) Next

Catch Return End Try

_Customization = value Colors = Items

ColorHook() Invalidate() End Set

End Property #End Region

#Region " Private Properties " Private _ImageSize As Size

Protected ReadOnly Property ImageSize() As Size Get

Return _ImageSize End Get

End Property

Private _LockWidth As Integer

Protected Property LockWidth() As Integer Get

Return _LockWidth End Get

(35)

If Not LockWidth = 0 AndAlso IsHandleCreated Then Width = LockWidth

End Set End Property

Private _LockHeight As Integer

Protected Property LockHeight() As Integer Get

Return _LockHeight End Get

Set(ByVal value As Integer) _LockHeight = value

If Not LockHeight = 0 AndAlso IsHandleCreated Then Height = LockHeight

End Set End Property

Private _IsAnimated As Boolean

Protected Property IsAnimated() As Boolean Get

Return _IsAnimated End Get

Set(ByVal value As Boolean) _IsAnimated = value InvalidateTimer() End Set

End Property #End Region

#Region " Property Helpers "

Protected Function GetPen(ByVal name As String) As Pen Return New Pen(Items(name))

End Function

Protected Function GetPen(ByVal name As String, ByVal width As Single) As Pen

Return New Pen(Items(name), width) End Function

Protected Function GetBrush(ByVal name As String) As SolidBrush

Return New SolidBrush(Items(name)) End Function

Protected Function GetColor(ByVal name As String) As Color Return Items(name)

End Function

Protected Sub SetColor(ByVal name As String, ByVal value As Color)

If Items.ContainsKey(name) Then Items(name) = value Else Items.Add(name, value)

End Sub

Protected Sub SetColor(ByVal name As String, ByVal r As Byte, ByVal g As Byte, ByVal b As Byte)

(36)

Protected Sub SetColor(ByVal name As String, ByVal a As Byte, ByVal r As Byte, ByVal g As Byte, ByVal b As Byte)

SetColor(name, Color.FromArgb(a, r, g, b)) End Sub

Protected Sub SetColor(ByVal name As String, ByVal a As Byte, ByVal value As Color)

SetColor(name, Color.FromArgb(a, value)) End Sub

Private Sub InvalidateBitmap()

If Width = 0 OrElse Height = 0 Then Return B = New Bitmap(Width, Height,

PixelFormat.Format32bppPArgb) G = Graphics.FromImage(B) End Sub

Private Sub InvalidateCustimization()

Dim M As New MemoryStream(Items.Count * 4) For Each B As Bloom In Colors

M.Write(BitConverter.GetBytes(B.Value.ToArgb), 0, 4) Next

M.Close()

_Customization = Convert.ToBase64String(M.ToArray) End Sub

Private Sub InvalidateTimer()

If DesignMode OrElse Not DoneCreation Then Return If _IsAnimated Then

AddAnimationCallback(AddressOf DoAnimation) Else

RemoveAnimationCallback(AddressOf DoAnimation) End If

End Sub #End Region

#Region " User Hooks "

Protected MustOverride Sub ColorHook() Protected MustOverride Sub PaintHook() Protected Overridable Sub OnCreation() End Sub

Protected Overridable Sub OnAnimation() End Sub

#End Region

#Region " Offset "

Private OffsetReturnRectangle As Rectangle

(37)

OffsetReturnRectangle = New Rectangle(r.X + amount, r.Y + amount, r.Width - (amount * 2), r.Height - (amount * 2))

Return OffsetReturnRectangle End Function

Private OffsetReturnSize As Size

Protected Function Offset(ByVal s As Size, ByVal amount As Integer) As Size

OffsetReturnSize = New Size(s.Width + amount, s.Height + amount)

Return OffsetReturnSize End Function

Private OffsetReturnPoint As Point

Protected Function Offset(ByVal p As Point, ByVal amount As Integer) As Point

OffsetReturnPoint = New Point(p.X + amount, p.Y + amount) Return OffsetReturnPoint

End Function #End Region

#Region " Center "

Private CenterReturn As Point

Protected Function Center(ByVal p As Rectangle, ByVal c As Rectangle) As Point

CenterReturn = New Point((p.Width \ 2 - c.Width \ 2) + p.X + c.X, (p.Height \ 2 - c.Height \ 2) + p.Y + c.Y)

Return CenterReturn End Function

Protected Function Center(ByVal p As Rectangle, ByVal c As Size) As Point

CenterReturn = New Point((p.Width \ 2 - c.Width \ 2) + p.X, (p.Height \ 2 - c.Height \ 2) + p.Y)

Return CenterReturn End Function

Protected Function Center(ByVal child As Rectangle) As Point Return Center(Width, Height, child.Width, child.Height) End Function

Protected Function Center(ByVal child As Size) As Point Return Center(Width, Height, child.Width, child.Height) End Function

Protected Function Center(ByVal childWidth As Integer, ByVal childHeight As Integer) As Point

Return Center(Width, Height, childWidth, childHeight) End Function

Protected Function Center(ByVal p As Size, ByVal c As Size) As Point

Return Center(p.Width, p.Height, c.Width, c.Height) End Function

(38)

CenterReturn = New Point(pWidth \ 2 - cWidth \ 2, pHeight \ 2 - cHeight \ 2)

Return CenterReturn End Function

#End Region

#Region " Measure "

Private MeasureBitmap As Bitmap

Private MeasureGraphics As Graphics 'TODO: Potential issues during multi-threading.

Protected Function Measure() As Size

Return MeasureGraphics.MeasureString(Text, Font, Width).ToSize

End Function

Protected Function Measure(ByVal text As String) As Size Return MeasureGraphics.MeasureString(text, Font, Width).ToSize

End Function #End Region

#Region " DrawPixel "

Private DrawPixelBrush As SolidBrush

Protected Sub DrawPixel(ByVal c1 As Color, ByVal x As Integer, ByVal y As Integer)

If _Transparent Then B.SetPixel(x, y, c1) Else

DrawPixelBrush = New SolidBrush(c1)

G.FillRectangle(DrawPixelBrush, x, y, 1, 1) End If

End Sub #End Region

#Region " DrawCorners "

Private DrawCornersBrush As SolidBrush

Protected Sub DrawCorners(ByVal c1 As Color, ByVal offset As Integer)

DrawCorners(c1, 0, 0, Width, Height, offset) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal r1 As Rectangle, ByVal offset As Integer)

DrawCorners(c1, r1.X, r1.Y, r1.Width, r1.Height, offset) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal x As

Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal offset As Integer)

DrawCorners(c1, x + offset, y + offset, width - (offset * 2), height - (offset * 2))

(39)

Protected Sub DrawCorners(ByVal c1 As Color) DrawCorners(c1, 0, 0, Width, Height) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal r1 As Rectangle)

DrawCorners(c1, r1.X, r1.Y, r1.Width, r1.Height) End Sub

Protected Sub DrawCorners(ByVal c1 As Color, ByVal x As

Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

If _NoRounding Then Return If _Transparent Then

B.SetPixel(x, y, c1)

B.SetPixel(x + (width - 1), y, c1) B.SetPixel(x, y + (height - 1), c1)

B.SetPixel(x + (width - 1), y + (height - 1), c1) Else

DrawCornersBrush = New SolidBrush(c1)

G.FillRectangle(DrawCornersBrush, x, y, 1, 1)

G.FillRectangle(DrawCornersBrush, x + (width - 1), y, 1, 1)

G.FillRectangle(DrawCornersBrush, x, y + (height - 1), 1, 1)

G.FillRectangle(DrawCornersBrush, x + (width - 1), y + (height - 1), 1, 1)

End If End Sub #End Region

#Region " DrawBorders "

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal offset As Integer)

DrawBorders(p1, 0, 0, Width, Height, offset) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal r As Rectangle, ByVal offset As Integer)

DrawBorders(p1, r.X, r.Y, r.Width, r.Height, offset) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

Integer, ByVal offset As Integer)

DrawBorders(p1, x + offset, y + offset, width - (offset * 2), height - (offset * 2))

End Sub

Protected Sub DrawBorders(ByVal p1 As Pen) DrawBorders(p1, 0, 0, Width, Height) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal r As Rectangle)

DrawBorders(p1, r.X, r.Y, r.Width, r.Height) End Sub

Protected Sub DrawBorders(ByVal p1 As Pen, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As

(40)

G.DrawRectangle(p1, x, y, width - 1, height - 1) End Sub

#End Region

#Region " DrawText "

Private DrawTextPoint As Point Private DrawTextSize As Size

Protected Sub DrawText(ByVal b1 As Brush, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) DrawText(b1, Text, a, x, y)

End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal text As

String, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer)

If text.Length = 0 Then Return DrawTextSize = Measure(text)

DrawTextPoint = Center(DrawTextSize) Select Case a

Case HorizontalAlignment.Left

G.DrawString(text, Font, b1, x, DrawTextPoint.Y + y)

Case HorizontalAlignment.Center

G.DrawString(text, Font, b1, DrawTextPoint.X + x, DrawTextPoint.Y + y)

Case HorizontalAlignment.Right

G.DrawString(text, Font, b1, Width - DrawTextSize.Width - x, DrawTextPoint.Y + y)

End Select End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal p1 As Point) If Text.Length = 0 Then Return

G.DrawString(Text, Font, b1, p1) End Sub

Protected Sub DrawText(ByVal b1 As Brush, ByVal x As Integer, ByVal y As Integer)

If Text.Length = 0 Then Return G.DrawString(Text, Font, b1, x, y) End Sub

#End Region

#Region " DrawImage "

Private DrawImagePoint As Point

Protected Sub DrawImage(ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer)

DrawImage(_Image, a, x, y) End Sub

Protected Sub DrawImage(ByVal image As Image, ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) If image Is Nothing Then Return

(41)

Select Case a

Case HorizontalAlignment.Left

G.DrawImage(image, x, DrawImagePoint.Y + y, image.Width, image.Height)

Case HorizontalAlignment.Center

G.DrawImage(image, DrawImagePoint.X + x, DrawImagePoint.Y + y, image.Width, image.Height)

Case HorizontalAlignment.Right

G.DrawImage(image, Width - image.Width - x, DrawImagePoint.Y + y, image.Width, image.Height)

End Select End Sub

Protected Sub DrawImage(ByVal p1 As Point) DrawImage(_Image, p1.X, p1.Y)

End Sub

Protected Sub DrawImage(ByVal x As Integer, ByVal y As Integer)

DrawImage(_Image, x, y) End Sub

Protected Sub DrawImage(ByVal image As Image, ByVal p1 As Point)

DrawImage(image, p1.X, p1.Y) End Sub

Protected Sub DrawImage(ByVal image As Image, ByVal x As Integer, ByVal y As Integer)

If image Is Nothing Then Return

G.DrawImage(image, x, y, image.Width, image.Height) End Sub

#End Region

#Region " DrawGradient "

Private DrawGradientBrush As LinearGradientBrush Private DrawGradientRectangle As Rectangle

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(blend, DrawGradientRectangle)

End Sub

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single)

DrawGradientRectangle = New Rectangle(x, y, width, height) DrawGradient(blend, DrawGradientRectangle, angle)

End Sub

Protected Sub DrawGradient(ByVal blend As ColorBlend, ByVal r As Rectangle)

DrawGradientBrush = New LinearGradientBrush(r, Color.Empty, Color.Empty, 90.0F)

DrawGradientBrush.InterpolationColors = blend G.FillRectangle(DrawGradientBrush, r)

Referensi

Dokumen terkait

Hasil penelitian adalah (1) proses pembelajaran pendidikan agama Islam guru mengunakan membuat RPP, menggunakan model pembelajaran, mengelola kelas, dan

Hasil penelitian setelah dilakukan mandi dengan air hangat terhadap kualitas tidur lansia pada kelompok eksperimen, tingkat kualitas tidur lansia terlihat menurun,

Dalam penelitian ini, berbagai organisasi Islam fundamentalis yang tumbuh dan berkembang di Universitas Indonesia dapat dipetakan menjadi tiga tipologi gerakan keagamaan, di

Ikatan kovalen terjadi karena adanya penggunaan elektron secara bersama dari atom yang satu ke atom yang lainnya. Ikatan logam, interaksi terjadi karena adanya

Peranan irigasi dalam meningkatkan dan menstabilkan produksi pertanian tidak hanya bersandar pada produktifitas saja tetapi juga pada kemampuannya untuk meningkatkan faktor-faktor

Tiga tahapan penting dalam pembuatan tempe yaitu (1) hidrasi dan pengasaman biji kedelai dengan direndam beberapa lama (satu malam); (2) pemanasan biji kedelai, yaitu dengan

Hasil penelitian adalah sebagai berikut; (1) bahwa gaya kepemimpinan situasional kepala sekolah berpengaruh positif terhadap komitmen organisasi guru di SMK Pasundan 1 Kota

Laporan Akhir ini disusun berdasarkan apa yang telah kami lakukan pada saat pengerjaan alat simulasi baik dari proses pembuatan, proses pengujian dan perencanaan