vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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 - Fortgeschrittene
Re: Fade-In,Fade-Out nicht linear 
Autor: GPM
Datum: 03.01.07 13:35

Hallo Hannes
Hier wird die Kuvenlänge linear aufgeteilt.
Die Zahl der Abschnitte ist einstellbar.
Die Punktwerte sind in % der Kurvenhöhe angegeben.
Für die Berechnung braucht die Bezierkurve nicht auf dem Bildschirm angezeigt werden.
Die Berechnung wird über die Pixel im GraphicsPath gemacht.
Imports System.Drawing.Drawing2D
Public Class Form1
    Dim bzp() As Point = {New Point(50, 450), New Point(100, 400), New Point( _
      400, 100), New Point(450, 50)}
    Dim gp, gpath As New GraphicsPath
    Dim plist As New List(Of RectangleF)
    Dim ts As Int32 = 10                         ' Anzahl der Abschnitte
    Dim curpoint As Int32
    Dim ptsvisible As Boolean
 
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        curpoint = -1
        If ptsvisible AndAlso gpath.IsVisible(e.Location) Then
            For i As Int32 = 1 To 2
                If Math.Abs(e.X - bzp(i).X) < 6 AndAlso Math.Abs(e.Y - bzp( _
                  i).Y) < 6 Then
                    curpoint = i
                End If
            Next
        End If
        If e.Button = Windows.Forms.MouseButtons.Right Then
            ptsvisible = Not ptsvisible
            If Not ptsvisible Then
                GetPoints()
            End If
            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
        e.Graphics.DrawRectangle(Pens.DimGray, 50, 50, 400, 400)
        e.Graphics.DrawBezier(New Pen(Color.Yellow, 2), bzp(0), bzp(1), bzp(2), _
          bzp(3))
        If ptsvisible Then
            gpath.Reset()
            For i As Int32 = 0 To 3
                gpath.AddEllipse(bzp(i).X - 5, bzp(i).Y - 5, 10, 10)
            Next
            e.Graphics.FillPath(Brushes.Red, gpath)
        Else
            Dim max As Int32 = plist(plist.Count - 1).Width
            Dim ppos As Int32 = 50
            For i As Int32 = 1 To ts - 1
                For Each r As RectangleF In plist
                    If r.Width >= i * max \ ts Then
                        e.Graphics.FillEllipse(Brushes.Red, r.X - 5, r.Y - 5, _
                          10, 10)
                        e.Graphics.DrawString((r.Height / 10).ToString(Format( _
                        "f2")) & " %", Me.Font, Brushes.Yellow, 2, ppos)
                        ppos += 15
                        Exit For
                    End If
                Next
            Next
        End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Me.SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.UserPaint Or _
        ControlStyles.AllPaintingInWmPaint, True)
        Me.SetBounds(100, 100, 510, 520)
        Me.BackColor = Color.Black
        Me.Text = "Bezierkurve mit linearer Aufteilung der Länge"
        GetPoints()
    End Sub
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        If ptsvisible AndAlso curpoint > -1 AndAlso e.Button = _
        Windows.Forms.MouseButtons.Left Then
            If e.X >= 50 AndAlso e.X <= 450 AndAlso e.Y >= 50 AndAlso e.Y _
            <= 450 Then
                bzp(curpoint) = New Point(e.X, e.Y)
                Me.Refresh()
            End If
        End If
    End Sub
    Sub GetPoints()
        Dim r As RectangleF
        r.Location = bzp(0)
        plist.Clear()
        gp.Reset()
        gp.AddBezier(bzp(0), bzp(1), bzp(2), bzp(3))
        Do
            plist.Add(r)
            Select Case True
                Case gp.IsOutlineVisible(r.X + 1, r.Y - 1, Pens.Black)
                    r.X += 1
                    r.Y -= 1
                    r.Width += 1414
                Case gp.IsOutlineVisible(r.X, r.Y - 1, Pens.Black)
                    r.Y -= 1
                    r.Width += 1000
                Case gp.IsOutlineVisible(r.X + 1, r.Y, Pens.Black)
                    r.X += 1
                    r.Width += 1000
                Case gp.IsOutlineVisible(r.X + 1, r.Y + 1, Pens.Black)
                    r.X += 1
                    r.Y -= 1
                    r.Width += 1414
                Case Else
                    Exit Do
            End Select
            r.Height = (400 - (r.Y - 50)) / 0.4
        Loop
    End Sub
MfG GPM
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fade-In,Fade-Out nicht linear1.488Hannes H.24.12.06 10:44
Re: Fade-In,Fade-Out nicht linear1.000GPM24.12.06 19:43
Re: Fade-In,Fade-Out nicht linear988Hannes H.24.12.06 20:03
Re: Fade-In,Fade-Out nicht linear944Hannes H.25.12.06 09:47
Re: Fade-In,Fade-Out nicht linear966Hannes H.25.12.06 10:25
Re: Fade-In,Fade-Out nicht linear975GPM25.12.06 14:39
Re: Fade-In,Fade-Out nicht linear947Hannes H.25.12.06 16:16
Re: Fade-In,Fade-Out nicht linear947Hannes H.25.12.06 17:05
Re: Fade-In,Fade-Out nicht linear934GPM25.12.06 18:48
Re: Fade-In,Fade-Out nicht linear1.151Hannes H.26.12.06 09:41
Re: Fade-In,Fade-Out nicht linear977GPM26.12.06 11:34
Re: Fade-In,Fade-Out nicht linear993GPM26.12.06 13:52
Re: Fade-In,Fade-Out nicht linear939Hannes H.26.12.06 16:18
Re: Fade-In,Fade-Out nicht linear950Hannes H.30.12.06 09:02
Re: Fade-In,Fade-Out nicht linear1.110GPM30.12.06 09:59
Re: Fade-In,Fade-Out nicht linear943GPM30.12.06 11:19
Re: Fade-In,Fade-Out nicht linear927Hannes H.30.12.06 16:00
Re: Fade-In,Fade-Out nicht linear969GPM30.12.06 17:29
Re: Fade-In,Fade-Out nicht linear958Hannes H.30.12.06 18:37
Re: Fade-In,Fade-Out nicht linear1.016GPM03.01.07 13:35
Re: Fade-In,Fade-Out nicht linear970Hannes H.25.01.07 21:07
Re: Fade-In,Fade-Out nicht linear909Hannes H.20.02.07 10:40
Re: Fade-In,Fade-Out nicht linear1.016GPM20.02.07 12:16
Re: Fade-In,Fade-Out nicht linear908Hannes H.20.02.07 15:50
Re: Fade-In,Fade-Out nicht linear940Hannes H.23.02.07 09:34
Re: Fade-In,Fade-Out nicht linear911Hannes H.23.02.07 09:38
Re: Fade-In,Fade-Out nicht linear892GPM23.02.07 11:16
Re: Fade-In,Fade-Out nicht linear912Hannes H.23.02.07 12:21
Re: Fade-In,Fade-Out nicht linear1.035Hannes H.25.02.07 10:13
Re: Fade-In,Fade-Out nicht linear931GPM25.02.07 11:54
Re: Fade-In,Fade-Out nicht linear1.044GPM25.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-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