ProgressCircle (for Linux/Windows & Mac.... evtl. ))
Verfasst: 12.03.2008 15:44
hier eine Kleinigkeit, die ich für mich selbst gebraucht habe..
ein klein wenig Mathe und 2D Drawing... fertig .. und das Beste.. es ist crossplattform
ein screenshot:

und hier der source:
Es ist noch viel Raum für Verbesserungen (z.B. die Werte für den Kreis,, nicht alle führen zu dem gewünschten Ergebnis.. dafür muß die Drawing-Procedure etwas angepasst werden (die Berechnung) aber dafür habe ich momentan keine Zeit...)
Viel Spaß damit!
ein klein wenig Mathe und 2D Drawing... fertig .. und das Beste.. es ist crossplattform

ein screenshot:

und hier der source:
Code: Alles auswählen
; ProgressCircle
; 2008 by walker
; free for everyone and any purposes
; enhancements made by others must be published and posted in the same PB-Forum ;-)
;--------------------------------------------
Procedure ProgressCircle(number.l,x.l,y.l,size.l,segments.l,fg.l,bg.l)
img=CreateImage(0,size,size)
StartDrawing(ImageOutput(0))
FillArea(0,0,1,bg)
Circle(size/2,size/2,size/2,fg)
Circle(size/2,size/2,size/2-10,bg)
t2=(segments/4);steps
t3=size/t2; width per step
For n = 0 To t2
LineXY(n*t3,0,size-(n*t3),size,bg)
LineXY(size,n*t3,0,size-(n*t3),bg)
Next
StopDrawing()
ImageGadget(number,x,y,size,size,ImageID(0))
EndProcedure
Procedure SetProgressCircleState(progressbar.l,segments.l, state.l, text.s , color.l, bg.l)
LoadFont(0,"sans",8)
StartDrawing(ImageOutput(0))
If text.s<>""
BackColor(bg)
DrawingFont(FontID(0))
DrawText(ImageWidth(0)/2-(TextWidth(text)/2)-4,(ImageWidth(0)/2-5)," ")
DrawText(ImageWidth(0)/2-(TextWidth(text)/2),(ImageWidth(0)/2-5),text)
EndIf
t2=(segments/4)
t3=ImageWidth(0)/t2
size=ImageWidth(0)
beta.d=(360/segments)*(state)
beta_h.d=(360/segments)/2
beta=beta-beat_h-90
x=ImageWidth(0)/2
y=ImageWidth(0)
cx=ImageWidth(0)/2
cy=ImageWidth(0)/2
r=ImageWidth(0)/2
r-3
beta_in_rad.d=(beta/180)*#PI
x1 = cx+r * Cos(beta_in_rad);
y1 = cy+r * Sin(beta_in_rad);
FillArea(x1,y1,bg,color)
StopDrawing()
SetGadgetState(progressbar,ImageID(0))
While WindowEvent():Wend
ProcedureReturn 1
EndProcedure
;---- DEMO -----<
bg=$D2D8C3; backgroundcolor
fg=$AAB68F; initial color of the circle
stp=12; values 4 , (8,9,10 = 10); 12; 18; 22; 28 for other values the drawing procedure must be changed (and I have no time at present)
size=50;20 is minimum; maximum... your screen ;-)
Da der Rest Unsinn war... müsst Ihr Euch nun selbst was ausdenken....
END
Viel Spaß damit!