vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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
Re: Rechteck skalieren 
Autor: Manfred X
Datum: 02.12.22 11:44

Hallo!


Hier ein programmiertes Beispiel zur Kombination von skalierten und relativen dazu liegenden Linien.

    Private Function DrawFigure()
 
        'Ausgangsgröße
        Dim x() As Integer = {100, 471, 561, 832, 900}
        Dim y() As Integer = {100, 149, 690}
 
        'Größe der Kerben (Auslinkungen?)
        Dim kerbtiefe As Integer = 40, kerblänge1 As Integer = 90, kerblänge2 = _
          70
 
 
        'skalierbare Punkte der Figur
        Dim pts() As Point = {New Point(x(0), y(0)), New Point(x(0), y(2)),
                              New Point(x(4), y(2)), New Point(x(1), y(0)),
                              New Point(x(2), y(0))}
 
        'Zentrum der Skalierung festlegen
        Dim center As Point = pts(0)
 
        'Skalierungsfaktoren (z.B. halbe Ausgangs-Größe)
        Dim ScaleX As Single = 0.5
        Dim ScaleY As Single = 0.5
 
        'Skalierbare Punkte skalieren (Rescale Methode)
        For i As Integer = 0 To pts.Length - 1
            pts(i) = Rescale(pts(i), center, ScaleX, ScaleY)
        Next
 
        'Zeichnung (pb sei eine Picurebox auf der Form)
        pb.Image = New Bitmap(1000, 1000)
 
        Using g As Graphics = Graphics.FromImage(pb.Image),
            p As New Pen(Color.Brown, 2)
 
            'Skalierte Punkte zeichnen
            g.DrawLine(p, pts(1), pts(0))
            g.DrawLine(p, pts(1), pts(2))
            g.DrawLine(p, pts(0), pts(4))
 
            'Einkerbung  relativ zu pts(4)
            g.DrawLine(p, pts(4), New Point(pts(4).X, pts(4).Y + kerbtiefe))
 
            g.DrawLine(p, New Point(pts(4).X, pts(4).Y + kerbtiefe), 
                 New Point(pts(4).X + kerblänge1, pts(4).Y + kerbtiefe))
 
            g.DrawLine(p, New Point(pts(4).X + kerblänge1, pts(4).Y + _
              kerbtiefe), 
                          New Point(pts(4).X + kerblänge1, pts(4).Y))
 
            'Verbindungslinie zwischen Kerben
            g.DrawLine(p, New Point(pts(4).X + kerblänge1, pts(4).Y), 
                          New Point(pts(2).X - kerblänge2, pts(4).Y))
 
            'zweite Einkerbung (relativ zu Punkt 2 und Punkt 4)
            g.DrawLine(p, New Point(pts(2).X - kerblänge2, pts(4).Y), 
                          New Point(pts(2).X - kerblänge2, pts(4).Y + _
                            kerbtiefe))
            g.DrawLine(p, New Point(pts(2).X - kerblänge2, pts(4).Y + _
            kerbtiefe), 
                          New Point(pts(2).X, pts(4).Y + kerbtiefe))
 
            'rechter Rand des Rechtecks ab Kerbung
            g.DrawLine(p, New Point(pts(2).X, pts(4).Y + kerbtiefe), pts(2))
 
        End Using
 
    End Function
 
 
 
    Private Function Rescale(p As Point, center As Point, 
             scalefactorX As Single, scalefactorY As Single) As Point
 
        Return New Point(CInt((p.X - center.X) * scalefactorX + center.X), 
                         (p.Y - center.Y) * scalefactorY + center.Y)
    End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Rechteck skalieiren1.75800Tobi07.04.16 19:18
Re: Rechteck skalieren1.012Manfred X07.04.16 20:02
Re: Rechteck skalieiren82500Tobi07.04.16 20:39
Re: Rechteck skalieren898Manfred X07.04.16 21:08
Re: Rechteck skalieren152Opossum0129.11.22 21:05
Re: Rechteck skalieren137Manfred X30.11.22 06:44
Re: Rechteck skalieren128Opossum0130.11.22 20:16
Re: Rechteck skalieren266Manfred X30.11.22 21:55
Re: Rechteck skalieren133Opossum0101.12.22 19:07
Re: Rechteck skalieren226Manfred X02.12.22 11:44

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