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-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bearbeiten) 
Autor: Majuz
Datum: 29.08.10 12:07

Hi,

Ich habs mit dem Code jetzt mal probiert und es klappt auch schon soweit, dass ich Linien erstellen kann. Neue Linie bei Rechtsklick funktioniert auch.
Den Code für die Klasse habe ich von Chris7483 übernommen und minimal erweitert.
Das steht jetzt im Codeteil der Form:
Public Class Form1
 
    Dim new_line As Boolean = True
    Dim current_line As Integer = 0
    Dim Lines As New List(Of LineClass.Line)
 
    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            If new_line = True Then
                Lines(current_line).Basepoints = New LineClass.Basepoints(Lines( _
                  current_line))
                new_line = False
            End If
            Lines(current_line).Basepoints.Items.Add(New LineClass.Basepoint( _
              Lines(current_line).Basepoints, e.Location, _
              LineClass.Basepoint.PointType.corner, PictureBox1))
        ElseIf e.Button = Windows.Forms.MouseButtons.Right Then
            Lines.Add(New LineClass.Line)
            current_line += 1
        End If
        For i = 0 To Lines.Count - 1
            Lines(i).draw(PictureBox1)
        Next i
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Lines.Add(New LineClass.Line)
    End Sub
End Class
Nun stellen sich für mich allerdings noch ein paar praktische fragen:
- wofür brauche ich die Variable "_parent"? Diese Zeigt ja auf das übergeordnete Element, aber welchen praktischen Nutzen hat das?

- Den nutzen der extraklasse "Basepoints" hab ich auch noch nicht so ganz verstanden. Es wäre doch viel einfacher diese wegzulassen und in der Klasse "Line" einfach
Private _Items As New List(Of Basepoint)
einzufügen

- Der Kurvenverlauf muss ja berechnet werden und in einer Punktliste abgespeichert werden. Wo mache ich das am besten und wo speichere ich das ab? In der Klasse "Basepoint" (weil ja für jeden Kurvenabschnitt einzeln berechnet werden muss und teilweise vielleicht auch garkeine Kurve, sondern eine gerade Linie gewünscht ist? Ist es dann geschickter die Liste im Punkt vor oder nach dem Abschnitt zu speichern, oder ist das Geschmackssache? Oder wäre eine neue Klasse für den Kurvenverlauf das beste?

Danke für eure Hilfe

Gruß
Marius

Zur Info: Die Berechnung lief in meinem alten Programm so:

    Private Sub Calculate_Spline(ByVal index As Integer)
        Dim i As Double
        Dim Temp As Point
        Dim Temp_inv As Point
        Dim P0 As Point = points(index).Loc
        Dim P1 As Point = points(index + 1).Loc
        Dim T0 As Point = points(index).Tangente_after
        Dim T1 As Point = points(index + 1).Tangente_before
        points(index).Line_Points.Clear()
        points(index).Line_Points_inv.Clear()
        If points(index).Line_Type = 2 Then                                 _
          'Hermite Spline                            'Beziere Spline
            For i = 0 To 1 Step STEPWIDTH
                Temp.X = B0(i) * P0.X + B1(i) * T0.X + B2(i) * P1.X + B3(i) * _
                  T1.X
                Temp.Y = B0(i) * P0.Y + B1(i) * T0.Y + B2(i) * P1.Y + B3(i) * _
                T1.Y
                Temp_inv.X = Temp.X
                Temp_inv.Y = PictureBox1.Height - Temp.Y
                points(index).Line_Points.Add(Temp)
                points(index).Line_Points_inv.Add(Temp_inv)
            Next i
        End If
    End Sub
 
    Private Function B0(ByVal u As Double)
        B0 = (1 - u) ^ 3
    End Function
 
    Private Function B1(ByVal u As Double)
        B1 = 3 * u * (1 - u) ^ 2
    End Function
 
    Private Function B2(ByVal u As Double)
        B2 = u ^ 3
    End Function
 
    Private Function B3(ByVal u As Double)
        B3 = 3 * u ^ 2 * (1 - u)
    End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hilfe bei Klassenerstellung für Kurven (erstellen + bearbeit...2.775Majuz22.08.10 00:10
meine bisherige Realisierung....1.470Majuz22.08.10 00:11
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.343Majuz22.08.10 22:14
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.364Chris748323.08.10 10:32
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.381Chris748323.08.10 10:32
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.383Majuz24.08.10 00:48
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.330Majuz29.08.10 12:07
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.287Chris748329.08.10 15:30
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.345Majuz29.08.10 21:14
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.285Majuz30.08.10 00:15
Re: Hilfe bei Klassenerstellung für Kurven (erstellen + bear...1.348Chris748330.08.10 09:29

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-2025 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