vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Koordinaten 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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