Start / Tipps / VB.NET-Tipp 0121: Umriss eines GraphicsPath zeichnen und transformieren
 
Startseite Up-/Download Tutorials Club Das Team
Rubriken Foren Bücher Tips 'n Tricks Suche


VB.NET-Tipp 0121: Umriss eines GraphicsPath zeichnen und transformieren


Hier wird am Beispiel eines Zylinders gezeigt, wie man einen Umriss um einen GraphicsPath zeichen kann. Zusätzlich wird eine Transformation vorgenommen.

Schwierigkeitsgrad 1 .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 Visual Basic 2005, Visual Basic 2008
Download des Beispielprojektes Download des Beispielprojektes [10,53 KB]
 
' Dieser Quellcode 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!

' Projektversion:   Visual Studio 2008
' Option Strict:    An
' Option Explicit:  An
' Option Infer:     An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Deployment
'  - System.Drawing
'  - System.Windows.Forms
'  - System.Xml
'  - System.Core
'  - System.Xml.Linq
'  - System.Data.DataSetExtensions
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Drawing
'  - System.Diagnostics
'  - System.Windows.Forms
'  - System.Linq
'  - System.Xml.Linq
'

' ##############################################################################
' ################################# Form1.vb ###################################
' ##############################################################################
Option Explicit On
Option Strict On

Imports System.Drawing.Drawing2D

Public Class Form1
    Private myCylinder As New GraphicsPath
    Private myCap As New GraphicsPath

    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        Me.CreatePath()
    End Sub

    Private Sub CreatePath()
        Dim width As Integer = 200
        Dim height As Integer = 80
        Dim capWidth As Integer = 10

        'Der Zylinder wird um den Nullpunkt erstellt
        'Dies ist später auch der Drehpunkt
        Me.myCylinder.AddRectangle(New Rectangle(CInt(width / 2 * -1), _
            CInt(height / 2 * -1), width, height))
        Me.myCylinder.AddEllipse(New Rectangle( _
            CInt(width / 2 * -1 - capWidth / 2), _
            CInt(height / 2 * -1), _
            capWidth, height))
        Me.myCylinder.FillMode = Drawing2D.FillMode.Winding
        Me.myCap.AddEllipse(New Rectangle(CInt(width / 2 - capWidth / 2), _
            CInt(height / 2 * -1), capWidth, height))
    End Sub

    Private Sub Transform()
        Using m As New Matrix
            ' Drehen
            m.Rotate(270, MatrixOrder.Append)
            ' Vergrössern verkleinern
            m.Scale(1, 1, MatrixOrder.Append)
            ' Verschieben
            m.Translate(200, 200, MatrixOrder.Append)
            ' Transformation auf die Objecte anwenden
            Me.myCylinder.Transform(m)
            Me.myCap.Transform(m)
        End Using
    End Sub

    Private Sub Form1_Paint(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

        ' Den Pen für die Umrandung erzeugen
        Using p As New Pen(Color.Black, 3)
            ' Den Weichzeichner einschalten
            e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
            Me.Transform()
            ' Die Umrisse der GraphicsPath zeichnen 
            e.Graphics.DrawPath(p, Me.myCylinder)
            ' Dann die Füllung drüber
            e.Graphics.FillPath(Brushes.DarkGray, Me.myCylinder)
            ' Das Selbe in grün
            e.Graphics.DrawPath(p, Me.myCap)
            e.Graphics.FillPath(Brushes.Gray, Me.myCap)
        End Using
    End Sub
End Class

Ihre Meinung

Falls Sie Fragen zu oder Erfahrungen mit diesem Tipp haben, dann sollten Sie diese hier posten. Für alles weitere melden Sie sich bitte in einem zum Thema passendem Forum.

Falls Sie in ihren Kommentar Quellcode einbinden wollen, verwenden Sie bitte Pseudotags: Quellcode Bei VB.NET wird durch ein vorangestelltes [dotnet] markiert und durch [/dotnet] abgeschlossen.

Ihr Name:   
Ihre E-Mailadresse:   
 
Bitte folgende Kontrollnummer eingeben: 2403
Kontrolle:   
 
Ihre Frage/Ihr Kommentar:
Ja, ich möchte weitere Beiträge per E-Mail erhalten
Von ActiveVB-Notizservice am 01.01.2002 um 00:01
Bisher wurden noch keine Notizen zu dieser Seite gepostet.

Erstellt: 04.03.2009
Aktualisierung: 26.07.2010
  Autor: Robert Closheim
E-Mail: Tipps@ActiveVB.de



Copyright © 1998-2010 by ActiveVB
Alle Rechte vorbehalten.