vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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 - Fortgeschrittene
Re: Fade-In,Fade-Out nicht linear 
Autor: Hannes H.
Datum: 26.12.06 09:41

Hallo GPM

Auch mit deiner Function habe ich das Problem.
Eventuell ist das ja so und ich bräuchte eine andere.

Aber nochmal zum verdeutlichen:
Eine gerade, die Kontrollpunkte sind auf der geraden gleichmäßig aufgeteilt:
http://www.eisbaer-manager.de/downloads/Screen1.gif

Ziehe ich nun die 2 Kontrollpunkte mit der Maus, und berechne wieder, ist der Abstand zwischen den Punkten nicht gleichmäßig:
http://www.eisbaer-manager.de/downloads/Screen2.gif

Ich berechne die Punkte mittels deine Function in einer Schleife (For t = 0 to 1 step 0.2)

Daraus schließe ich, das die Strecke 0 - 1 für t zwar Anfang - Ende der Bezierkurve ist, jedoch diese nicht gleichmäßig diese Darstellt.
Je weiter ich den Kontrollpunkt 1 vom Anfang wegziehe, umso weiter wird dieser Abstand.

Hier nochmal mein Code:
    Dim bzpoints() As Point = {New Point(50, 400), New Point(250, 400), New _
      Point(400, 400), New Point(450, 100)}
    Dim CheckPoint As New ArrayList
 
    Dim gpath As New GraphicsPath
    Dim curpoint As Int32
    Dim ptsvisible As Boolean
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        curpoint = -1
        If ptsvisible AndAlso gpath.IsVisible(New Point(e.X, e.Y)) Then
            For i As Int32 = 1 To 2
                If Math.Abs(e.X - bzpoints(i).X) < 6 AndAlso Math.Abs(e.Y - _
                  bzpoints(i).Y) < 6 Then
                    curpoint = i
                End If
            Next
        End If
        If e.Button = Windows.Forms.MouseButtons.Right Then
            ptsvisible = Not ptsvisible
            Me.Refresh()
        End If
    End Sub
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality
        For Each h As Point In CheckPoint
            e.Graphics.DrawPie(Pens.Green, h.X - 5, h.Y - 5, 10, 10, 0, 360)
 
        Next
        e.Graphics.DrawBezier(New Pen(Color.Yellow, 2), bzpoints(0), bzpoints( _
          1), bzpoints(2), bzpoints(3))
        If ptsvisible Then
            gpath.Reset()
            For i As Int32 = 0 To 3
                gpath.AddEllipse(bzpoints(i).X - 5, bzpoints(i).Y - 5, 10, 10)
            Next
            e.Graphics.FillPath(Brushes.Red, gpath)
        End If
 
 
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        CheckPoint.Add(New Point(0, 0))
 
        Me.SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.UserPaint Or _
          ControlStyles.AllPaintingInWmPaint, True)
        Me.SetBounds(100, 100, 500, 500)
        Me.BackColor = Color.Black
    End Sub
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        If ptsvisible AndAlso curpoint > -1 AndAlso e.Button = _
        Windows.Forms.MouseButtons.Left Then
            bzpoints(curpoint) = New Point(e.X, e.Y)
            Me.Refresh()
        End If
    End Sub
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        bzpoints(0) = New Point(100, 400)
        bzpoints(1) = New Point(200, 300)
        bzpoints(2) = New Point(300, 200)
        bzpoints(3) = New Point(400, 100)
        Refresh()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button2.Click
        Dim ay, ax, by, bx, cy, cx, pty, ptx, t As Double
        CheckPoint.Clear()
        For t = 0 To 1 Step 0.2
            CheckPoint.Add(BezierPos(t))
        Next
        Refresh()
    End Sub
    Function BezierPos(ByVal t As Double) As Point
        Dim p As Point
        p.X = bzpoints(0).X * t ^ 3 + bzpoints(1).X * 3 * t ^ 2 * (1 - t) + _
          bzpoints(2).X * 3 * t * (1 - t) ^ 2 + bzpoints(3).X * (1 - t) ^ 3
        p.Y = bzpoints(0).Y * t ^ 3 + bzpoints(1).Y * 3 * t ^ 2 * (1 - t) + _
        bzpoints(2).Y * 3 * t * (1 - t) ^ 2 + bzpoints(3).Y * (1 - t) ^ 3
        Return p
    End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fade-In,Fade-Out nicht linear1.430Hannes H.24.12.06 10:44
Re: Fade-In,Fade-Out nicht linear952GPM24.12.06 19:43
Re: Fade-In,Fade-Out nicht linear941Hannes H.24.12.06 20:03
Re: Fade-In,Fade-Out nicht linear899Hannes H.25.12.06 09:47
Re: Fade-In,Fade-Out nicht linear914Hannes H.25.12.06 10:25
Re: Fade-In,Fade-Out nicht linear932GPM25.12.06 14:39
Re: Fade-In,Fade-Out nicht linear901Hannes H.25.12.06 16:16
Re: Fade-In,Fade-Out nicht linear905Hannes H.25.12.06 17:05
Re: Fade-In,Fade-Out nicht linear892GPM25.12.06 18:48
Re: Fade-In,Fade-Out nicht linear1.096Hannes H.26.12.06 09:41
Re: Fade-In,Fade-Out nicht linear930GPM26.12.06 11:34
Re: Fade-In,Fade-Out nicht linear953GPM26.12.06 13:52
Re: Fade-In,Fade-Out nicht linear898Hannes H.26.12.06 16:18
Re: Fade-In,Fade-Out nicht linear904Hannes H.30.12.06 09:02
Re: Fade-In,Fade-Out nicht linear1.044GPM30.12.06 09:59
Re: Fade-In,Fade-Out nicht linear901GPM30.12.06 11:19
Re: Fade-In,Fade-Out nicht linear882Hannes H.30.12.06 16:00
Re: Fade-In,Fade-Out nicht linear911GPM30.12.06 17:29
Re: Fade-In,Fade-Out nicht linear917Hannes H.30.12.06 18:37
Re: Fade-In,Fade-Out nicht linear969GPM03.01.07 13:35
Re: Fade-In,Fade-Out nicht linear927Hannes H.25.01.07 21:07
Re: Fade-In,Fade-Out nicht linear861Hannes H.20.02.07 10:40
Re: Fade-In,Fade-Out nicht linear971GPM20.02.07 12:16
Re: Fade-In,Fade-Out nicht linear858Hannes H.20.02.07 15:50
Re: Fade-In,Fade-Out nicht linear898Hannes H.23.02.07 09:34
Re: Fade-In,Fade-Out nicht linear866Hannes H.23.02.07 09:38
Re: Fade-In,Fade-Out nicht linear848GPM23.02.07 11:16
Re: Fade-In,Fade-Out nicht linear872Hannes H.23.02.07 12:21
Re: Fade-In,Fade-Out nicht linear992Hannes H.25.02.07 10:13
Re: Fade-In,Fade-Out nicht linear888GPM25.02.07 11:54
Re: Fade-In,Fade-Out nicht linear949GPM25.12.06 18:57

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