Problem mit Line

superquatsch

Grünschnabel
Hallo Jungs
habe folgendes Problem ein projekt von mir von vb6 in vb.net umgewandelt habe es auch geschafft die meisten fehler zu beheben aber mit diesem hier hatte ich ein problem :
"Y1" ist kein Member von "System.Windows.Forms.Label"
hier der code
Code:
If CDbl(signal) >= 0 Then
			Yvalue = (CDbl(signal) - 255) * (-1)
			'UPGRADE_ISSUE: Line Eigenschaft Line2.Y1 wird zur Laufzeit nicht unterstützt. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSExpressCC.v80/dv_commoner/local/redirect.htm?keyword="74E732F3-CAD8-417B-8BC9-C205714BB4A7"'
			Line2.Y1 = Yvalue
			'UPGRADE_ISSUE: Line Eigenschaft Line2.Y2 wird zur Laufzeit nicht unterstützt. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSExpressCC.v80/dv_commoner/local/redirect.htm?keyword="74E732F3-CAD8-417B-8BC9-C205714BB4A7"'
			Line2.Y2 = Yvalue
			lblSignal.Text = signal
		End If
:confused:Wie kann ich so eine Linie dann machen ? oder kann man vb6 control in .net verwenden? :confused: .
Schon mal Danke
superquatsch
 
Zuletzt bearbeitet:

Norbert Eder

Erfahrenes Mitglied
Bau dir ein eigenes Linien-Control, oder sonst arbeite beispielsweise mit der GroupBox (ganz zusammen legen, Höhe auf 1 oder 2 stellen), oder nimm ein Label-Control und stell den Border auf FixedSingle. Da gibt es einige Möglichkeiten.
 

proprogger

Mitglied
Du kannst im Paint-Ereignis eines Controls, z.b. deines Lables, grafische Befehle einfügen. Diese werden jedesmal ausgeführt, wenn der Bildschirminhalt an der entsprechenden Stelle abgedeckt wurde und somit neu gezeichnet werden muss. Manuell kannst du den gezeichneten Inhalt dann über die Refresh()-Funktion des Lables aktualisieren (wenn sich deine Daten ändern)

Um deine Linie zu zeichnen, erstellst du ein Paint-Ereignis zum Label mit folgendem Inhalt:
Code:
Dim g as Graphics = e.Graphics 'Aufnehmen des Graphics-Objektes, welches zum Zeichnen verwendet wird

'Mit folgendem Befehl wird die Linie gezeichnet
'Du kannst Farbe (Color.Black) und Dicke (1) verändern und musst x1, y1, x2, y2 einfügen
g.DrawLine(new Pen(Color.Black, 1), x1, y1, x2, y2)

'Es gibt noch einige andere Zeichenbefehle... Schaue dir dazu einfach die Graphics-Member an.

Ich hoffe ich habe dir damit geholfen.
Es gibt noch Probleme wenn der Inhalt sehr schnell aktualisiert wird: Das Bild flackert. Dem kannst du mit dem sogenannten DoubleBuffering entgegenwirken: Das zu zeichnende Bild wird dann zunächst zwischengespeichert und ersetzt danach das alte gespeicherte Bild. Somit liegen zu keinem Zeitpunkt zu wenig Daten vor, was darin resultiert, dass immer der vollständige Inhalt deines Labels angezeigt wird. Doch es ist nicht so einfach DoubleBuffering zu aktivieren. Dazu musst du eine Conrol-Klasse (z.b. Label oder Panel) vererben und im Konstruktor die Style-Flags verändern. Dazu dürfte es schon genug Threads geben, denke ich.