vielen Dank für Deinen Tipp. Ich habe mir beide Diagramme (2D
- 3D) angesehen und ausprobiert. Beide Beispiele sind sehr
aufwendig und nicht ganz das was ich möchte. Es sollte nur ein
Kreis sein, der Stepp bei Stepp aufgefüllt wird. Sicher ist
das leichter gesagt als getan, aber vielleicht gibt es doch
noch einen Hinweis aus der großen VB-Fan Gemeinde.
Hallo Detlev,
nimm einfach mal eine Form mit einem CommandButton,
den nachfolgenden Code, lade die Form dann und klick dann mehrmals auf den Button…
Für mich ist das jetzt ein Kreis der Step by Step (durch Buttonklick)
aufgefüllt wird.
Die Schrittweite kannste ja leicht von 20 auf 3,6 abändern wenn du da 100 steps haben willst.
Das ist der 2d-Code von activevb, ich habe nur Kleinigkeiten angepast.
Aufwendig fand ich das nicht.
Gruß
Reinhard
'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!
'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm ---------
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"
Option Explicit
Private Declare Function Pie Lib "gdi32" (ByVal hdc As \_
Long, ByVal x1 As Long, ByVal y1 As Long, ByVal \_
x2 As Long, ByVal y2 As Long, ByVal X3 As Long, \_
ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 \_
As Long) As Long
Private Type ELPRECTTYPE
Left As Long
Top As Long
Right As Long
Bottom As Long
rX As Long
rY As Long
Mx As Long
My As Long
End Type
Dim PiRad As Double, Fortschritt As Double
Private Sub Command1\_Click()
Fortschritt = Fortschritt + 20
Call Form\_Paint
End Sub
Private Sub Form\_Load()
Me.ScaleMode = vbPixels
PiRad = 4 \* Atn(1) / 180
End Sub
Private Sub Form\_Paint()
Dim elpRect As ELPRECTTYPE
Dim x1&, y1&, x2&, y2&
Dim WnkStart As Double, WnkEnde As Double, a As Double
Me.FillStyle = vbFSSolid
With elpRect
.Left = 10
.Top = 10
.Right = 210
.Bottom = 210
.rX = (.Right - .Left) / 2
'.rX = (.Right - .Left) ' bringt nix ???
.rY = (.Bottom - .Top) / 2
.Mx = .rX + .Left
.My = .rY + .Top
'If Check1.Value = vbUnchecked Then Me.ForeColor = vbMagenta
Me.FillColor = vbRed
WnkStart = 100
WnkEnde = 120 + Fortschritt
Call GetXYfromAngle(.rX, .rY, .Mx, .My, WnkStart, x1, y1)
Call GetXYfromAngle(.rX, .rY, .Mx, .My, WnkEnde, x2, y2)
Call Pie(Me.hdc, .Left, .Top, .Right, .Bottom, \_
x1, y1, x2, y2)
End With
End Sub
Private Sub GetXYfromAngle(rX&, rY&, Mx&, My&, \_
Wnk As Double, x&, y&:wink:
x = Sin(PiRad \* Wnk) \* rX + Mx
y = Cos(PiRad \* Wnk) \* rY + My
End Sub