| |
VB.NET - Ein- und UmsteigerLiniendiagramm zur Laufzeit erstellen | | | Autor: Kraut | Datum: 26.02.13 02:46 |
| Hallo!
Ich versuche ein Liniendiagramm im VB2008 zur Laufzeit zu erstellen. Leider scheint das nicht zu funktionieren.
Um die Linien darzustellen, sollen LineShapes-Array zur Laufzeit erstellt werden. Leider kenne ich kein anderes Steuer-Element, das Linien für ein Diagramm darstellen könnte.
Hier Ausschnitte vom Quellcode:
Dim sc As New ShapeContainer
Dim ls(20, 11) As LineShape
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
sc.Parent = Me
For i = 1 To MaxZeit
For j = 1 To MaxLinien
ls(i, j).Parent = sc
ls(i, j).StartPoint = New System.Drawing.Point(x,y)
ls(i, j).EndPoint = New System.Drawing.Point(x,y)
ls(i, j).BorderWidth = 2
Next
Next
Fett = Fehlermeldung
Kursiv = Hier werden die entsprechenden Kopdinaten berechnet (aus Plazugründen kein Berechnungscode eingegeben)
Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Wie ist das Problem zu lösen? | |
Re: Liniendiagramm zur Laufzeit erstellen | | | Autor: Manfred X | Datum: 26.02.13 07:57 |
| Hallo!
Du mußt in Deiner Schleife zunächst
ein LineShape-Objekt an der Arrayposition j,i erstellen (New).
(Die Deklaration eines Array erstellt noch keine
entsprechenden Objekte.)
Schau Dir z.B. auch mal das MS-Chart-Control an,
wenn Du (Linien-)Diagramme auf relativ einfache Weise
erstellen willst.
PowerPacks sind veraltet.
Schau Dir zum Zeichnen mal die GDI-Objekte in Net an (graphics etc.).
http://www.java2s.com/Tutorial/VB/0300__2D-Graphics/LineShapeDiamond.htm
Beitrag wurde zuletzt am 26.02.13 um 08:09:32 editiert. | |
Re: Liniendiagramm zur Laufzeit erstellen | | | Autor: GPM | Datum: 26.02.13 11:27 |
| LineShapes für Liniendiagramme sind wirklich nicht nötig. Hier mal
der Code des Links von Manfred X für eine Timer-Demo angepasst.
Public Class Form1
Dim WithEvents Pb As New PictureBox With {.Dock = DockStyle.Fill, .Parent = _
Me}
Dim WithEvents T As New Timer With {.Interval = 500, .Enabled = True}
Dim k As Int32 = 3
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
Me.BackColor = Color.Black
Me.ClientSize = New Size(800, 800)
End Sub
Private Sub Pb_Paint(sender As Object, e As _
System.Windows.Forms.PaintEventArgs) Handles Pb.Paint
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Using p As New Pen(Brushes.Yellow, 2)
Dim x(60), y(60) As Single
For i = 0 To k
x(i) = CSng(Pb.Width \ 2 + 300 * Math.Cos((2 * Math.PI / k) * _
i))
y(i) = CSng(Pb.Width \ 2 - 300 * Math.Sin((2 * Math.PI / k) * _
i))
Next
For i As Int32 = 0 To k - 1
For j As Int32 = i + 1 To k
e.Graphics.DrawLine(p, x(i), y(i), x(j), y(j))
Next
Next
End Using
End Sub
Private Sub T_Tick(sender As Object, e As System.EventArgs) Handles T.Tick
If k < 18 Then k += 1 Else k = 3
Me.Text = k.ToString & " Ecken"
Pb.Invalidate()
End Sub
End Class MfG GPM 0 | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|