Public Class YkCtl Structure SM Private vStyle As Drawing2D.HatchStyle Private vwidth As Single, vHeight As Single Private vFColor As Color Private vBColor As Color Property Style() As Drawing2D.HatchStyle Get Return Me.vStyle End Get Set(ByVal value As Drawing2D.HatchStyle) Me.vStyle = value End Set End Property Property Width() As Single Get Return Me.vwidth End Get Set(ByVal value As Single) Me.vwidth = value End Set End Property Property Height() As Single Get Return Me.vHeight End Get Set(ByVal value As Single) Me.vHeight = value End Set End Property Property FColor() As Color Get Return Me.vFColor End Get Set(ByVal value As Color) Me.vFColor = value End Set End Property Property BColor() As Color Get Return Me.vBColor End Get Set(ByVal value As Color) Me.vBColor = value End Set End Property End Structure Dim vMFilltype(0) As SM Dim vVertical As Boolean = True Dim vMaxWidth As Single = Me.Width '//총너비 Property MaxSize() As Single Get Return (vMaxWidth) End Get Set(ByVal value As Single) Me.vMaxWidth = value Me.Refresh() End Set End Property Property Vertical() As Boolean '//그림이 세로형태? Get Return (vVertical) End Get Set(ByVal value As Boolean) Me.vVertical = value Me.Refresh() ' MsgBox(value) End Set End Property Property M1FillType() As SM() Get Return (Me.vMFilltype) End Get Set(ByVal value As SM()) Me.vMFilltype = value Me.Refresh() ' MsgBox("sdf") End Set End Property Private Sub UserControl1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint If Me.vMFilltype Is Nothing OrElse Me.MaxSize <= 0 Then Return Dim G As Graphics = e.Graphics Dim Rect As Rectangle Dim W As Single ' If Me.MaxWidth <> 0 Then For i As Integer = 0 To Me.M1FillType.GetUpperBound(0) '//갯수만큼 돈다 '//해당 사각형의 Rectangle 을 생성 If i = 0 Then If Me.Vertical Then W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(0, 5, W, Me.Height - 10) Else W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(5, 0, Me.Width - 10, W) End If Else If Me.Vertical Then W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(GetWidth(i), 5, W, Me.Height - 10) Else W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(5, GetWidth(i), Me.Width - 10, W) End If End If Try Dim B As New System.Drawing.Drawing2D.HatchBrush(Me.M1FillType(i).Style, Me.M1FillType(i).FColor, Me.M1FillType(i).BColor) G.FillRectangle(B, Rect) Catch ex As Exception End Try Next For i As Integer = 0 To Me.M1FillType.GetUpperBound(0) '//갯수만큼 돈다 If Vertical Then If i = 0 Then W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(0, 5, W, Me.Height - 10) Else W = Me.Width / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(GetWidth(i), 5, W, Me.Height - 10) End If If i <> 0 Then ' AndAlso i <> Me.M1FillType.GetUpperBound(0) Then G.DrawLine(New Pen(Color.Black), Rect.X, 5, Rect.X, Me.Height - 5) End If Else If i = 0 Then W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(5, 0, Me.Width - 10, W) Else W = Me.Height / Me.MaxSize * Me.M1FillType(i).Width Rect = New Rectangle(5, GetWidth(i), Me.Width - 10, W) End If If i <> 0 Then 'AndAlso i <> Me.M1FillType.GetUpperBound(0) Then G.DrawLine(New Pen(Color.Black), 5, Rect.Y, Me.Width - 5, Rect.Y) End If End If Next G.DrawRectangle(New Pen(Color.Black), New Rectangle(0, 0, Me.Width - 2, Me.Height - 2)) G.Dispose() End Sub Private Function GetWidth(ByVal idx As Integer) As Single Dim Retval As Single = 0 For i As Integer = 0 To idx - 1 Retval += IIf(Me.Vertical = True, Me.Width, Me.Height) / Me.MaxSize * Me.M1FillType(i).Width Next Return Retval End Function End Class