| |
VB.NET - Ein- und UmsteigerKoordinaten in Picturebox | | | Autor: Peter Pan | Datum: 11.07.11 09:08 |
| Hallo,
ich bin gerade dabei, mit einem größeren Programm von vb6 auf vb.net umzusteigen und stehe dabei immer wieder vor dem einen oder anderen Problem, wobei ich diese bisher noch gelöst bekommen habe.
Die Picturebox macht mir jetzt aber einiges Kopfzerbrechen.
Ich benutze die PB im Prinzip als Zeichenfläche (Linien, Kreise, ...), das funktioniert soweit auch sehr gut, aber bei der Scalierung der Box, bzw. des Koordinatensystems habe ich Probleme.
Über .CreateGraphics.PageUnit = GraphicsUnit.Millimeter kann ich die Koordinaten zwar auf Millimeter einstellen, aber wie teile ich der Picturebox die Koordinaten der Ecken mit.
Ich möchte zB die Box so einstellen, das linke obere Ecke die Koordinate 10:10 hat und die untere 100:100 und zeichne dann eine Linie von 20:30 nach 70:80
Ich finde zwar noch die Funktion .PageScale, aber mit der .net Hilfe komme ich da nicht weiter, alleine schon die Einheit, zB .PageScale = 2.0F, was soll denn 2.0F heißen?
In vb6 gab es die Funktionen . ScaleLeft .ScaleWidth usw. damit war die Einstellung recht einfach, ich vermute in vb.net geht das ähnlich, ich finde aber die entsprechenden Funtionen nicht.
Ich hoffe der eine oder andere kann mir bei meinem Problem weiterhelfen, Danke schon mal im voraus
Sascha | |
Re: Koordinaten in Picturebox | | | Autor: Manfred X | Datum: 12.07.11 06:04 |
| Hallo!
Wenn Du Zeichnungen am Bildschirm darstellen willst,
ist der geeignete Maßstab dafür Pixel (bzw. GraphicsUnit.Display).
Liegen Deine Werte in einer anderen Skalierung vor,
kannst Du eine Transformationsmatrix erstellen, durch die
Deine Werte in Pixel-Koordinaten umgerechnet werden.
http://www.vbarchiv.net/tipps/details.php?id=1869
Bei Verwendung der Funktion "ScaleMatrix" (aus dem obigen Tipp)
zur Erstellung einer Transformationsmatrix, könnte das Paint-Ereignis
der Picturebox so aussehen ("System.Drawing" muss importiert sein):
Private Sub PictureBox1_Paint(sender As Object, _
e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Using smat As Drawing2D.Matrix = ScaleMatrix _
(10, 90, 10, 90, _
0, PictureBox1.Image.Width, 0, PictureBox1.Image.Height),
redbrush As New Drawing.SolidBrush(Drawing.Color.Red)
e.Graphics.Clear(Color.White) 'Arbeitsfläche löschen
e.Graphics.Transform = smat 'Trafo-Matrix zuweisen
'Einige Punkte (=Rectangle) re-skaliert zeichnen ...
For i As Integer = 10 To 100 Step 10
e.Graphics.FillRectangle(redbrush, i - 2, i - 2, 5, 5)
Next i
End Using
End Sub Durch die Verwendung eines "Using"-Blocks erfolgt die Freigabe
nicht-verwalteter Resourcen ohne dass es nötig ist, die Dispose-Methoden
der Klassen (Brush, Matrix) per Code aufzurufen.
Beachte, dass bei der Transformation Rundungs-Ungenauigkeiten auftreten
können, die das Aussehen der Zeichnung beeinträchtigen.
Es ist mitunter vorteilhaft, die Skalen-Umrechnungen explizit durchzuführen
und dabei geeignete Ausgleiche vorzunehmen.
MfG
Manfred
Beitrag wurde zuletzt am 12.07.11 um 06:09:17 editiert. | |
Re: Koordinaten in Picturebox | | | Autor: Peter Pan | Datum: 12.07.11 07:08 |
| Hallo Manfred,
vielen Dank erst mal für deine ausführliche Antwort, die muß ich mir zusammen mit dem Link erst mal in Ruhe zu Gemüte führen.
Wie befürchtet, werde ich wohl den gesamten Code meiner Anwendung der sich mit dem Zeichnen in den PictureBoxes beschäftigt neu schreiben müssen. Irgendwie vermisse ich vb6 jetzt schon, war irgendwie wesentlich einfacher.
Grüße
Sascha | |
Re: Koordinaten in Picturebox | | | Autor: Manfred X | Datum: 12.07.11 08:28 |
| Hallo!
Wenn Du sehr viel Code erstellt hast, der die
VB6-Paint-Methoden aufruft, ist es bei der Umstellung
von Programmen eventuell vorteilhaft, diese VB6-Methoden (mit ihren
Aufrufparametern / Überladungen) in VB.Net nachzuprogrammieren.
Du brauchst dann am bereits bestehenden Code kaum etwas zu ändern.
MfG
Manfred
Beitrag wurde zuletzt am 12.07.11 um 08:29:45 editiert. | |
| 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 TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|