Tipp-Upload: VB.NET 0157: ChartBarsHorizontal
von pks
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Grafik
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Chart,Grafik
Der Vorschlag wurde erstellt am: 06.12.2007 14:16.
Die letzte Aktualisierung erfolgte am 06.12.2007 14:16.
Beschreibung
ein Chart mit Balken horizontal über ein Control
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' -------- Anfang Projektdatei ChartBarsH_Demo.vbproj -------- ' ---------------- Anfang Datei ChartBarsH.vb ---------------- ' ------------------------------------- ' ChartBarsH VB2005 ' ein Chart mit Balken horizontal ' ' Autor peter.k.sauer@web.de ' created 03.12.2007 ' update 06.12.2007 ' ------------------------------------- Imports System.ComponentModel ''' <summary> ''' Chart mit horizontalen Bars ''' </summary> ''' <remarks></remarks> <Description("Chart mit horizontalen Bars")> Public Class ChartBarsH Inherits Control ' Verwalten der Bars Private BarsList As New List(Of ChartBarH) ' Verwalten der Descriptions Private DescriptionList As New List(Of ChartBarsH_Description) ' Eigenschaften der Caption Private WithEvents m_Caption As New ChartCaption ' Eigenschaften des Charts Private WithEvents m_Chart As New ChartValues ''' <summary> ''' liefert eine Liste von ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert eine Liste von ChartBarH"), Category("Chart")> Public ReadOnly _ Property Bars() As List(Of ChartBarH) Get Return BarsList End Get End Property ''' <summary> ''' diverse Einstellungen im Chart ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("diverse Einstellungen im Chart"), Category("Chart")> <TypeConverter( _ GetType(ExpandableObjectConverter))> <DesignerSerializationVisibility( _ DesignerSerializationVisibility.Content)> Public ReadOnly Property Chart() As _ ChartValues Get Return m_Chart End Get End Property ''' <summary> ''' liefert eine Liste von Beschreibungen zum ChartBarsH (untere Zeile) ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert eine Liste von Beschreibungen zum ChartBarsH (untere Zeile)"), _ Category( "Chart")> Public ReadOnly Property Descriptions() As List(Of _ ChartBarsH_Description) Get Return DescriptionList End Get End Property ''' <summary> ''' Eigenschaften der Überschrift ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Eigenschaften der Überschrift"), Category("Chart")> <TypeConverter(GetType( _ ExpandableObjectConverter))> <DesignerSerializationVisibility( _ DesignerSerializationVisibility.Content)> Public ReadOnly Property Caption() As _ ChartCaption Get Return m_Caption End Get End Property Public Sub New() Debug.Print(Me.Name) Me.BackColor = m_Chart.ChartBackColor End Sub ''' <summary> ''' fügt einen ChartBarH in die Auflistung ein ''' </summary> ''' <param name="Y">Y-Position des ChartBarH</param> ''' <param name="Width">Breite des ChartBarH</param> ''' <param name="FillColor">Farbe des Bars eines ChartBarH</param> ''' <param name="BorderColor">BorderColor des Bars eines ChartBarH</param> ''' <param name="BarText1">Text1 des ChartBarH, in aller Regel links vom Bar</param> ''' <param name="BarText2">Text2 des ChartBarH, rechts vom Bar</param> ''' <remarks></remarks> <Description("fügt einen ChartBarH in die Auflistung ein")> _ Public Sub BarAdd(ByVal Y As Integer, ByVal Width As Integer, _ ByVal FillColor As Color, ByVal BorderColor As Color, _ Optional ByVal BarText1 As String = Nothing, _ Optional ByVal BarText2 As String = Nothing) BarsList.Add(New ChartBarH(New Point(m_Chart.BarLeft, Y), New Size(Width, _ m_Chart.BarHeight), FillColor, BorderColor, BarText1, BarText2)) End Sub ''' <summary> ''' fügt der Descriptionauflistung ein Element hinzu ''' </summary> ''' <param name="Size">Grösse eines Kästchens</param> ''' <param name="FillColor">Füllfarbe eines Kästchens</param> ''' <param name="BorderColor">Rahmenfarbe eines Kästchens</param> ''' <param name="Text">Beschreibung zu einem Bar</param> ''' <remarks></remarks> Public Sub DescriptionAdd(ByVal Size As Size, ByVal FillColor As Color, ByVal BorderColor _ As Color, ByVal Text As String) Dim Desc As New ChartBarsH_Description Desc.Size = Size Desc.FillColor = FillColor Desc.BorderColor = BorderColor Desc.Description = Text DescriptionList.Add(Desc) End Sub ''' <summary> ''' Chart zeichnen, nur interne Verwendung ''' </summary> ''' <param name="Gr"></param> ''' <remarks></remarks> Public Sub DrawChart(ByVal Gr As Graphics) ' Rahmen zeichnen If m_Chart.ChartBorderWidth > 0 Then Dim w As Single = m_Chart.ChartBorderWidth Using P As New Pen(m_Chart.ChartBorderColor, w) If w = 1 Then Gr.DrawRectangle(P, 0, 0, Me.Width - w, Me.Height - w) Else Gr.DrawRectangle(P, w / 2, w / 2, Me.Width - w, Me.Height - w) End If End Using End If ' Überschrift drucken Using Br As New SolidBrush(Caption.ForeColor) Dim w As Integer = Convert.ToInt32(m_Chart.ChartBorderWidth) Dim x As Integer = (Me.Width - Gr.MeasureString(Caption.Text, _ Caption.Font).Width) / 2 + w Gr.DrawString(Caption.Text, Caption.Font, Br, x, Caption.Top) End Using ' alle Bars durchlaufen For Each Bar As ChartBarH In BarsList ' Bar zeichen Dim Rect As New Rectangle(New Point(Bar.Location.X, Bar.Location.Y + _ m_Chart.FirstBarTop), Bar.Size) Using Br As New SolidBrush(Bar.FillColor) Using P As New Pen(Bar.BorderColor) Gr.FillRectangle(Br, Rect) Gr.DrawRectangle(P, Rect) End Using End Using ' Text1 drucken If Not String.IsNullOrEmpty(Bar.Text1) Then Dim y As Integer = Bar.Location.Y + m_Chart.FirstBarTop y += (m_Chart.BarHeight - Gr.MeasureString("x", m_Chart.BarTextFont).Height) / 2 Using Br As New SolidBrush(m_Chart.BarTextColor) Gr.DrawString(Bar.Text1, m_Chart.BarTextFont, Br, m_Chart.BarText1Left, y) End Using End If ' Text2 drucken If Not String.IsNullOrEmpty(Bar.Text2) Then Dim y As Integer = Bar.Location.Y + m_Chart.FirstBarTop Dim x As Integer = Rect.X + Rect.Width + m_Chart.BarText2Left y += (m_Chart.BarHeight - Gr.MeasureString("x", m_Chart.BarTextFont).Height) / 2 Using Br As New SolidBrush(m_Chart.BarTextColor) Gr.DrawString(Bar.Text2, m_Chart.BarTextFont, Br, x, y) End Using End If Next ' Zeile mit Descripton zeichnen und drucken Dim x1 As Integer = m_Chart.DescriptionLeft For Each Desc As ChartBarsH_Description In DescriptionList Dim Pt As New Point(x1, Me.Height - (Desc.Size.Height * 2)) Dim Rect As New Rectangle(Pt, Desc.Size) ' Farbkästchen zeichnen Using Br As New SolidBrush(Desc.FillColor) Using P As New Pen(Desc.BorderColor) Gr.FillRectangle(Br, Rect) Gr.DrawRectangle(P, Rect) End Using End Using Pt.X += (Rect.Width + 5) Dim y As Integer = Pt.Y y += (m_Chart.BarHeight - Gr.MeasureString("x", m_Chart.BarTextFont).Height) / 2 ' Text drucken Using Br As New SolidBrush(m_Chart.BarTextColor) Gr.DrawString(Desc.Description, m_Chart.BarTextFont, Br, Pt.X, y) End Using x1 = Pt.X + Gr.MeasureString(Desc.Description, m_Chart.BarTextFont).Width + 10 Next End Sub ''' <summary> ''' zeichnen des Charts ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub ChartBarsH_Paint(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles Me.Paint If String.IsNullOrEmpty(m_Caption.Text) Then m_Caption.Text = Me.Name If String.IsNullOrEmpty(m_Caption.Text) Then m_Caption.Text = "Caption.Text" End If Exit Sub End If DrawChart(e.Graphics) End Sub ''' <summary> ''' Neuzeichnen erzwingen ''' </summary> ''' <remarks></remarks> Private Sub m_Caption_CaptionChanged() Handles m_Caption.CaptionChanged Me.Refresh() End Sub ''' <summary> ''' Neuzeichnen erzwingen ''' </summary> ''' <remarks></remarks> Private Sub m_Chart_ChartChanged() Handles m_Chart.ChartChanged Me.BackColor = m_Chart.ChartBackColor Me.Refresh() End Sub End Class ''' <summary> ''' stellt einen ChartBarH dar ''' </summary> ''' <remarks></remarks> <Description("stellt einen ChartBarH dar")> Public Class ChartBarH Private m_Location As Point Private m_Size As Size Private m_FillColor As Color Private m_BorderColor As Color Private m_Text1 As String Private m_Text2 As String Public Sub New() End Sub ''' <summary> ''' liefert einen ChartBarH ''' </summary> ''' <param name="mLocation">Position des Bars eines ChartBarH</param> ''' <param name="mSize">Grösse des Bars eines ChartBarH</param> ''' <param name="mFillColor">Fillcolor des Bars eines ChartBarH</param> ''' <param name="mBorderColor">Bordercolor des Bars eines ChartBarH</param> ''' <param name="mText1">Text1 eines ChartBarH</param> ''' <param name="mText2">Text2 eines ChartBarH</param> ''' <remarks></remarks> Public Sub New(ByVal mLocation As Point, ByVal mSize As Size, _ ByVal mFillColor As Color, ByVal mBorderColor As Color, _ Optional ByVal mText1 As String = Nothing, _ Optional ByVal mText2 As String = Nothing) m_Location = mLocation m_Size = mSize m_FillColor = mFillColor m_BorderColor = mBorderColor m_Text1 = mText1 m_Text2 = mText2 End Sub ''' <summary> ''' ruft ab oder legt fest die Position eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property Location() As Point Get Return m_Location End Get Set(ByVal value As Point) m_Location = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Grösse eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property Size() As Size Get Return m_Size End Get Set(ByVal value As Size) m_Size = value End Set End Property ''' <summary> ''' ruft ab oder legt fest Fillcolor eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property FillColor() As Color Get Return m_FillColor End Get Set(ByVal value As Color) m_FillColor = value End Set End Property ''' <summary> ''' ruft ab oder legt fest Bordercolor eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property BorderColor() As Color Get Return m_BorderColor End Get Set(ByVal value As Color) m_BorderColor = value End Set End Property ''' <summary> ''' ruft ab oder legt fest Text1 eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property Text1() As String Get Return m_Text1 End Get Set(ByVal value As String) m_Text1 = value End Set End Property ''' <summary> ''' ruft ab oder legt fest Text2 eines Bars eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public Property Text2() As String Get Return m_Text2 End Get Set(ByVal value As String) m_Text2 = value End Set End Property End Class ''' <summary> ''' diverse Einstellungen im Chart ''' </summary> ''' <remarks></remarks> <Description("diverse Einstellungen im Chart")> Public Class ChartValues Public Event ChartChanged() Private m_BarLeft As Integer = 50 Private m_BarHeight As Integer = 10 Private m_FirstBarTop As Integer = 40 Private m_BarText1Left As Integer = 5 Private m_BarText2Left As Integer = 10 Private m_DescriptionLeft As Integer = 50 Private m_BarTextFont As New Font("Arial", 8) Private m_BarTextColor As Color = Color.Black Private m_ChartBorderWidth As Single = 1 Private m_ChartBorderColor As Color = Color.Black Private m_ChartBackColor As Color = Color.White ''' <summary> ''' ruft ab oder legt fest die Stärke eines Rahmens (0=kein Rahmen) ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die Stärke eines Rahmens (0=kein Rahmen)")> Public _ Property ChartBorderWidth() As Single Get Return m_ChartBorderWidth End Get Set(ByVal value As Single) m_ChartBorderWidth = value RaiseEvent ChartChanged() End Set End Property ''' <summary> ''' ruft ab oder legt fest die Farbe des Rahmens ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die Farbe des Rahmens")> Public Property _ ChartBorderColor() As Color Get Return m_ChartBorderColor End Get Set(ByVal value As Color) m_ChartBorderColor = value RaiseEvent ChartChanged() End Set End Property ''' <summary> ''' ruft ab oder legt fest die Farbe des Chart ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die Farbe des Chart")> Public Property _ ChartBackColor() As Color Get Return m_ChartBackColor End Get Set(ByVal value As Color) m_ChartBackColor = value RaiseEvent ChartChanged() End Set End Property ''' <summary> ''' Y-Position der ersten Bar im Chart ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Y-Position der ersten Bar im Chart")> Public Property FirstBarTop() As Integer Get Return m_FirstBarTop End Get Set(ByVal value As Integer) m_FirstBarTop = value End Set End Property ''' <summary> ''' liefert oder legt fest die X-Position der Beschreibung (letzte Zeile) ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest die X-Position der Beschreibung (letzte Zeile)")> _ Public Property DescriptionLeft() As Integer Get Return m_DescriptionLeft End Get Set(ByVal value As Integer) m_DescriptionLeft = value End Set End Property ''' <summary> ''' liefert oder legt fest die Farbe der Texte für einen ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest die Farbe der Texte für einen ChartBarH")> Public _ Property BarTextColor() As Color Get Return m_BarTextColor End Get Set(ByVal value As Color) m_BarTextColor = value End Set End Property ''' <summary> ''' liefert oder legt fest die X-Position für Text1 eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest die X-Position für Text1 eines ChartBarH")> Public _ Property BarText1Left() As Integer Get Return m_BarText1Left End Get Set(ByVal value As Integer) m_BarText1Left = value End Set End Property ''' <summary> ''' liefert oder legt fest den X-Abstand für Text2 eines ChartBarH hinter dem Bar ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest den X-Abstand für Text2 eines ChartBarH hinter " & _ "dem Bar")> Public Property BarText2Left() As Integer Get Return m_BarText2Left End Get Set(ByVal value As Integer) m_BarText2Left = value End Set End Property ''' <summary> ''' liefert oder legt fest den Font für den Text eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest den Font für den Text eines ChartBarH")> Public _ Property BarTextFont() As Font Get Return m_BarTextFont End Get Set(ByVal value As Font) m_BarTextFont = value End Set End Property ''' <summary> ''' liefert oder legt fest die X-Position für den Bar eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> ''' <Description("liefert oder legt fest die X-Position für den Bar eines ChartBarH")> Public _ Property BarLeft() As Integer Get Return m_BarLeft End Get Set(ByVal value As Integer) m_BarLeft = value End Set End Property ''' <summary> ''' liefert oder legt fest die Höhe für den Bar eines ChartBarH ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("liefert oder legt fest die Höhe für den Bar eines ChartBarH")> Public _ Property BarHeight() As Integer Get Return m_BarHeight End Get Set(ByVal value As Integer) m_BarHeight = value End Set End Property End Class ''' <summary> ''' Description zum Chart, Farbe der Bars und Bedeutung ''' </summary> ''' <remarks></remarks> <Description("Description zum Chart, Farbe der Bars und Bedeutung")> Public Class _ ChartBarsH_Description Private m_FillColor As Color Private m_BorderColor As Color Private m_Size As Size Private m_Description As String Public Sub New() End Sub ''' <summary> ''' eine Beschreibung ''' </summary> ''' <param name="mSize">Grösse Farbkasten wie 10,10</param> ''' <param name="mFillcolor">Füllfarbe</param> ''' <param name="mBordercolor">Rahmenfarbe</param> ''' <param name="mDescription">Beschreibung eines Bar</param> ''' <remarks></remarks> Public Sub New(ByVal mSize As Size, ByVal mFillcolor As Color, ByVal mBordercolor As _ Color, ByVal mDescription As String) m_Size = mSize m_BorderColor = mBordercolor m_FillColor = mFillcolor m_Description = mDescription End Sub ''' <summary> ''' ruft ab oder legt fest die Füllfarbe eines Kästchens ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Füllfarbe eines Kästchens")> Public Property FillColor() As Color Get Return m_FillColor End Get Set(ByVal value As Color) m_FillColor = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Rahmenfarbe eines Kästchens ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Rahmenfarbe eines Kästchens")> Public Property BorderColor() As Color Get Return m_BorderColor End Get Set(ByVal value As Color) m_BorderColor = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Grösse eines Kästchens ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Breite und Höhe eines Kästchens")> Public Property Size() As Size Get Return m_Size End Get Set(ByVal value As Size) m_Size = value End Set End Property ''' <summary> ''' ruft ab oder legt fest die Beschreibung zu einem Bar ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("Beschreibung eines Bar")> Public Property Description() As String Get Return m_Description End Get Set(ByVal value As String) m_Description = value End Set End Property End Class ''' <summary> ''' Überschrift des Charts ''' </summary> ''' <remarks></remarks> <Description("Überschrift des Charts")> Public Class ChartCaption Private m_Text As String Private m_Font As New Font("Arial", 10, FontStyle.Bold) Private m_ForeColor As Color = Color.Black Private m_Top As Integer = 5 Public Event CaptionChanged() Public Sub New() End Sub Public Sub New(ByVal mText As String) m_Text = mText End Sub ''' <summary> ''' ruft ab oder legt fest die Überschrift ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die Überschrift")> Public Property Text() As String Get Return m_Text End Get Set(ByVal value As String) m_Text = value RaiseEvent CaptionChanged() End Set End Property ''' <summary> ''' ruft ab oder legt fest den Font für die Überschrift ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest den Font für die Überschrift")> Public Property _ Font() As Font Get Return m_Font End Get Set(ByVal value As Font) m_Font = value RaiseEvent CaptionChanged() End Set End Property ''' <summary> ''' ruft ab oder legt fest die ForeColor für die Überschrift ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die ForeColor für die Überschrift")> Public Property _ ForeColor() As Color Get Return m_ForeColor End Get Set(ByVal value As Color) m_ForeColor = value RaiseEvent CaptionChanged() End Set End Property ''' <summary> ''' ruft ab oder legt fest die Y-Position für die Überschrift ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <Description("ruft ab oder legt fest die Y-Position für die Überschrift")> Public _ Property Top() As Integer Get Return m_Top End Get Set(ByVal value As Integer) m_Top = value RaiseEvent CaptionChanged() End Set End Property End Class ' ----------------- Ende Datei ChartBarsH.vb ----------------- ' ------------------ Anfang Datei Form1.vb ------------------ Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load With ChartBarsH1 Dim C1 As Color = Color.LightBlue Dim C2 As Color = Color.LightGreen Dim C3 As Color = Color.Black .Bars.Clear() .Caption.Text = "Umsatzentwicklung bei Getränken" Dim y As Integer = 0 .BarAdd(y, 100, C1, C3, "Bier", "100.000") y += 15 .BarAdd(y, 115, C2, C3, "", "115.000") y += 20 .BarAdd(y, 80, C1, C3, "Weizen", "80.000") y += 15 .BarAdd(y, 87, C2, C3, "", "87.000") y += 20 .BarAdd(y, 117, C1, C3, "Cola", "117.000") y += 15 .BarAdd(y, 102, C2, C3, "", "102.000") y += 20 .Descriptions.Clear() .DescriptionAdd(New Size(10, 10), C1, C3, "Umsatz 2005") .DescriptionAdd(New Size(10, 10), C2, C3, "Umsatz 2006") End With End Sub End Class ' ------------------- Ende Datei Form1.vb ------------------- ' --------- Ende Projektdatei ChartBarsH_Demo.vbproj ---------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.