Click here to Skip to main content
15,885,925 members
Articles / Desktop Programming / Windows Forms

i00 Spell Check and Control Extensions - No Third Party Components Required!

Rate me:
Please Sign up or sign in to vote.
4.95/5 (117 votes)
11 Jan 2014Ms-PL16 min read 1.3M   22   266  
Simple to use, open source Spell Checker for .NET
Imports System.Reflection
Imports System.Diagnostics
Imports System.Drawing.Drawing2D

Public Class AboutScreen

    Private Sub bpLogo_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles bpLogo.Paint
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality

        Using gb As New LinearGradientBrush(New Point(0, 0), New Point(0, bpLogo.ClientSize.Height), Color.Transparent, DrawingFunctions.AlphaColor(Color.Black, 31))
            e.Graphics.FillRectangle(gb, bpLogo.ClientRectangle)
        End Using
        'e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.High
        'e.Graphics.DrawImage(My.Resources.Icon, New Point(CInt((bpLogo.ClientSize.Width - My.Resources.Icon.Width) / 2), CInt((bpLogo.ClientSize.Height - My.Resources.Icon.Height) / 2)))
        Using b As New SolidBrush(Color.FromArgb(255, 120, 154, 255))
            'Dim LogoSize As Single = Me.ClientSize.Width
            Dim LogoSize = CSng(Me.ClientSize.Height * 1.25)
            Dim LeftPos = CSng(Me.ClientSize.Width - (LogoSize * 0.75))
            If LeftPos < -(LogoSize * 0.25) Then LeftPos = CSng(-(LogoSize * 0.25))
            DrawingFunctions.DrawLogo(e.Graphics, b, New RectangleF(LeftPos, CSng((bpLogo.ClientSize.Height - LogoSize) / 2), LogoSize, LogoSize))
        End Using

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
        Close()
    End Sub

    Public Sub New()
        InitializeComponent()
        Me.Size = New Size(400, 400)
    End Sub

    Private Sub AboutScreen_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As Assembly = System.Reflection.Assembly.GetExecutingAssembly

        lblReferences.Width = pnlReferences.ClientSize.Width - lblReferences.Left - System.Windows.Forms.SystemInformation.VerticalScrollBarWidth
        lblReferences.Text = Join((From xItem In a.GetReferencedAssemblies Order By xItem.Name Select xItem.Name).ToArray, vbCrLf)

        'Dim fi As FileVersionInfo = FileVersionInfo.GetVersionInfo(a.Location)

        lblVersion.Text = "Version: " & a.GetName.Version.ToString

        SelectedTab = New TabItem("About")
        Tabs.Add(SelectedTab)
        Tabs.Add(New TabItem("Legal"))

        Dim ControlColor As Color = DrawingFunctions.AlphaColor(Color.FromKnownColor(KnownColor.Control), 127)
        pnlAbout.BackColor = ControlColor
        For Each tab As Control In pnlTabHolders.Controls
            tab.Dock = DockStyle.Fill
            For Each Control As Control In tab.Controls
                If TypeOf Control Is Panel Then
                    AddHandler CType(Control, Panel).Scroll, AddressOf pnlContents_Scroll
                End If
                If LCase(TryCast(Control.Tag, String)) <> "false" Then
                    Control.BackColor = ControlColor
                    For Each subctl In Control.Controls.OfType(Of Control)()
                        subctl.BackColor = Color.Transparent
                    Next
                ElseIf tab.BackColor = ControlColor Then
                    Control.BackColor = Color.Transparent
                End If
            Next
            tab.Dock = DockStyle.Fill
        Next
        UpdateTabs()

        SiteLink.Text = "http://i00Productions.org"
        SiteLinkProduct.Visible = False
        'SiteLinkProduct.Text = "http://www.vbforums.com/showthread.php?p=4075093"

    End Sub

    Private Sub pnlContents_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs)
        Dim sPanel = TryCast(sender, Panel)
        If sPanel IsNot Nothing Then sPanel.Refresh()
    End Sub

    Private Sub SiteLink_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles SiteLink.LinkClicked, SiteLinkProduct.LinkClicked
        Dim sLinkLabel = TryCast(sender, LinkLabel)
        If sLinkLabel IsNot Nothing Then System.Diagnostics.Process.Start(sLinkLabel.Text)
    End Sub

    Dim SelectedTab As TabItem = Nothing

    Dim Tabs As New List(Of TabItem)

    Public Class TabItem
        Public Text As String
        Public Location As Rectangle
        Public Sub New(ByVal Text As String)
            Me.Text = Text
        End Sub
    End Class

    Private Sub UpdateTabs()
        For Each tab As Control In pnlTabHolders.Controls
            If LCase(TryCast(tab.Tag, String)) = LCase(SelectedTab.Text) Then
                tab.Visible = True
            Else
                tab.Visible = False
            End If
        Next
    End Sub

    Private Sub bpTabs_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bpTabs.MouseClick
        Dim TabsClicked = From xItem In Tabs Where xItem.Location.Contains(e.Location)
        If TabsClicked.Count > 0 Then
            SelectedTab = TabsClicked(0)
            UpdateTabs()
            bpTabs.Refresh()
        End If
    End Sub

    Private Sub bpTabs_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles bpTabs.Paint
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality
        Dim FontSize As Single = DrawingFunctions.Text.DetermineFontSizeForBounds("", bpTabs.Font, , bpTabs.Height)
        Dim Font As Font = DrawingFunctions.Text.FontSetNewSize(bpTabs.Font, FontSize)

        Dim TabOffset As Integer = 0
        Dim LastGp As GraphicsPath = Nothing
        For i = 0 To Tabs.Count - 1
            Using TabBrush As New LinearGradientBrush(New Point(0, 0), New Point(0, bpTabs.ClientSize.Height), CType(IIf(Tabs(i) Is SelectedTab, DrawingFunctions.BlendColor(Color.FromKnownColor(KnownColor.Highlight), bpLogo.BackColor, 127), DrawingFunctions.BlendColor(Color.Black, bpLogo.BackColor, 31)), Color), bpLogo.BackColor)
                Dim gp As New GraphicsPath
                Dim TextWidth As Integer = CInt(e.Graphics.MeasureString(Tabs(i).Text, Font).Width)
                Dim TextRight As Integer = TabOffset + TextWidth
                gp.AddLine(New Point(TabOffset, (bpTabs.ClientSize.Height - If(Tabs(i) Is SelectedTab, 0, 1))), New Point(TabOffset, 0))
                gp.AddLine(gp.GetLastPoint, New Point(TextRight, 0))
                gp.AddLine(gp.GetLastPoint, New Point(TextRight + bpTabs.ClientSize.Height, bpTabs.ClientSize.Height - If(Tabs(i) Is SelectedTab, 0, 1)))
                If LastGp IsNot Nothing Then
                    If Tabs(i) IsNot SelectedTab Then
                        e.Graphics.SetClip(LastGp, CombineMode.Exclude)
                    End If
                End If
                If Tabs(i) IsNot SelectedTab Then
                    gp.CloseFigure()
                End If
                e.Graphics.FillPath(TabBrush, gp)
                DrawingFunctions.Text.DrawString(e.Graphics, Tabs(i).Text, Font, New SolidBrush(Color.FromKnownColor(KnownColor.ControlText)), TabOffset, 1, DrawingFunctions.Text.TextRenderMode.Windows)
                e.Graphics.DrawPath(New Pen(Color.FromKnownColor(KnownColor.ControlDark)), gp)
                Tabs(i).Location = New Rectangle(TabOffset, 0, CInt(TextWidth + (bpTabs.ClientSize.Height / 2)), bpTabs.ClientSize.Height)
                TabOffset = CInt(TextRight + (bpTabs.ClientSize.Height / 2))
                LastGp = gp
            End Using
        Next
        e.Graphics.DrawLine(New Pen(Color.FromKnownColor(KnownColor.ControlDark)), CSng(TabOffset + (bpTabs.ClientSize.Height / 2)), bpTabs.ClientSize.Height - 1, bpTabs.ClientSize.Width, bpTabs.ClientSize.Height - 1)
    End Sub

    Private Sub pnlTabHolders_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles pnlTabHolders.Paint
        e.Graphics.DrawRectangle(New Pen(Color.FromKnownColor(KnownColor.ControlDark)), New Rectangle(0, -1, pnlTabHolders.ClientSize.Width - 1, pnlTabHolders.ClientSize.Height))
    End Sub

    Private Sub TransParentControls_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.BackColorChanged
        Dim sControl = TryCast(sender, Control)
        If sControl IsNot Nothing AndAlso sControl.BackColor <> Color.Transparent Then sControl.BackColor = Color.Transparent
    End Sub

End Class

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)


Written By
i00
Software Developer (Senior) i00 Productions
Australia Australia
I hope you enjoy my code. It's yours to use for free, but if you do wish to say thank you then a donation is always appreciated.
You can donate here.

Comments and Discussions