Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Tortendiagramm erstellen
Von Timo Schnitzer
Befehle : Init,Erstelle,UseGFont,Zeige,Deinit
UseGFont:
1. Par : FontName
2. Par : Zeichenhöhe
3. Par : Zeichenbreite
4. Par : Fett?
5. Par : Kursiv?
6. Par : Unterstrichen?
Init:
1. Par - 4. Par : Ort und Länge des Rechtecks, in dem das Tortendiagramm gezeichnet wird
5. Par : Tiefe des Tortendiagramms
6. Par : Beginn der Zählung (in Prozent)
7. Par : Neigung (in Prozent)
8. Par : Ein evt. Rand der um das Diagramm gezeichnet wird
Erstelle:
1. Par : Größe des Tortenstücks (in Prozent)
2. Par : Farbe des Tortenstücks
3. Par : Schrift im Tortenstück
Zeige:
1. Par : Handle des Fenster auf dem gezeichnet werden soll
2. Par : KopierModus
Deinit:
0 Par
Dieses Demo zeigt zu fast jeder Funktion eine Anwendungsmöglickeit
declare Button&,T1$,T2$,T3$,T4$,T%,T2%,T3%
$I Grafik.inc
WindowTitle Tortendiagramme mit der der Grafik.inc von Timo Schnitzer
WindowStyle 528
Window 0,0 - 600,400
Button& = Create(Button,%HWnd,Ende,Width(%HWnd) - 60,10,50,25)
USEGFONT Courier,18,7,1,1,1
T1$ = Das
T2$ = ist
T3$ = ein
T4$ = Tor-
ten-
dia-
gramm
!!!
T% = 9 + Len(T4$)
Whileloop T%
Case (&Loop = 3) OR (&Loop = 6) OR (&Loop = 9) : T3% = 1
Case (&Loop = (14)) OR (&Loop = (20)) OR (&Loop = (26)) OR (&Loop = (33)) : T2% = 1
Casenot Val(SubStr$(Left$($ProfVer,2),1,.)) > 8 : Clear T2% vor Version 9 -> Len(
) = 1 ||| Version 9 u. höher -> Len(
) = 2
INIT Tortendiagramm,70,30,300,300,170,0,0,0
ERSTELLE 50/3,Rgb(0,255,0),Mid$(T1$,1,&Loop)
ERSTELLE 50/3,Rgb(255,0,0),Mid$(T2$,1,&Loop - 3)
ERSTELLE 50/3,Rgb(0,255,255),Mid$(T3$,1,&Loop - 6)
ERSTELLE 50,Rgb(255,255,0),Mid$(T4$,1,&Loop - 9 - T2%)
ZEIGE %HWnd,0
DEINIT
Sleep 400 - T2% * 400 + T3% * 400
Clear T2%,T3%
Case GetFocus(Button&) : end
Wend
USEGFONT Arial,18,7,0,0,0
Sleep 5000
Cls
Whileloop 200
INIT Tortendiagramm,70,30,300,300,170,&Loop/2,40,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 25
INIT Tortendiagramm,70,30,300,300,170,0,40,0
ERSTELLE 40 ,Rgb(0,255,0),Grün
ERSTELLE 15 - &Loop / 5,Rgb((25 - &Loop) * 25,&Loop * 25,0),Rot->
Grün
ERSTELLE 10 + &Loop / 5,Rgb(0,255,255),Türkis
ERSTELLE 05 ,Rgb(192,192,192),Grau
ERSTELLE 20 - &Loop / 5,Rgb(255,255,0),Gelb
ERSTELLE 10 + &Loop / 5,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 25
INIT Tortendiagramm,70,30,300,300,170,0,40,0
ERSTELLE 40 ,Rgb(0,255,0),Grün
ERSTELLE 15 - (25 - &Loop) / 5,Rgb(&Loop * 25,(25 - &Loop) * 25,0),Grün->
Rot
ERSTELLE 10 + (25 - &Loop) / 5,Rgb(0,255,255),Türkis
ERSTELLE 05 ,Rgb(192,192,192),Grau
ERSTELLE 20 - (25 - &Loop) / 5,Rgb(255,255,0),Gelb
ERSTELLE 10 + (25 - &Loop) / 5,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 100
INIT Tortendiagramm,70,30,300,300,170 + &Loop * 6 / 4,&Loop,40,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 40,0,-1
INIT Tortendiagramm,70,30,300,300,170 + &Loop * 15 / 4,0,40,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 12
INIT Tortendiagramm,70,30,300,300,170,0,40 + &Loop * 5,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 50
INIT Tortendiagramm,70,30,300,300,170,0,100 - &Loop * 2,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
Whileloop 4
INIT Tortendiagramm,70,30,300,300,170,0,0 + &Loop * 5,0
ERSTELLE 40,Rgb(0,255,0),Grün
ERSTELLE 15,Rgb(255,0,0),Rot
ERSTELLE 10,Rgb(0,255,255),Türkis
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255,0),Gelb
ERSTELLE 10,Rgb(255,0,255),Lila
ZEIGE %HWnd,0
DEINIT
Case GetFocus(Button&) : end
Wend
declare H1%,I1%,H2%,I2%
Clear T%
Clear T2%
T% = 0
T2% = 5
H1% = 10
H2% = 60
I1% = 10
I2% = 20
Whilenot GetFocus(Button&)
Add T%,T2%
Add H2%,H1%
Add I2%,I1%
INIT Tortendiagramm,H2%,I2%,300,300,170,T% * (100/85),20 + T% / 1.5,10
ERSTELLE 40,Rgb(0,255,T% * 3),Grün
ERSTELLE 15,Rgb(255,T% * 1,0),Rot
ERSTELLE 10,Rgb(355 - T% * 3,255 - T% * 2,254 - T% * 1),Weiß 254 Wegen Transparenz
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255 - T% * 2,0),Gelb
ERSTELLE 10,Rgb(255,T% * 3,254),Lila 254 Wegen Transparenz
ZEIGE %HWnd,-1 Mit Profan leider etwas langsam
DEINIT
Case H2% > 600 - 320 : H1% = -10
Case H2% < 0 : H1% = 10
Case I2% > 400 - 310 : I1% = -10
Case I2% < -50 : I1% = 10
Case T% > 84 : T2% = -5
Case T% < 1 : T2% = 5
Wend
SetWindowPos Button& = %Maxx,0 - 0,0
T2% = T%
T% = 0
INIT Tortendiagramm,H2%,I2%,300,300,170,T2% * (100/85),20 + T2% / 1.5,0
ERSTELLE 40,Rgb(0,255,T% * 3),Grün
ERSTELLE 15,Rgb(255,T% * 1,0),Rot
ERSTELLE 10,Rgb(355 - T% * 3,255 - T% * 2,254 - T% * 1),Weiß
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255 - T% * 2,0),Gelb
ERSTELLE 10,Rgb(255,T% * 3,2554),Lila
ZEIGE %HWnd,-1
DEINIT
Sleep 1000
T% = T2%
INIT Tortendiagramm,H2%,I2%,300,300,170,T2% * (100/85),20 + T2% / 1.5,0
ERSTELLE 40,Rgb(0,255,T% * 3),Grün
ERSTELLE 15,Rgb(255,T% * 1,0),Rot
ERSTELLE 10,Rgb(355 - T% * 3,255 - T% * 2,254 - T% * 1),Weiß
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255 - T% * 2,0),Gelb
ERSTELLE 10,Rgb(255,T% * 3,254),Lila
ZEIGE %HWnd,-1
DEINIT
Sleep 1000
T% = 0
INIT Tortendiagramm,H2%,I2%,300,300,170,T2% * (100/85),20 + T2% / 1.5,0
ERSTELLE 40,Rgb(0,255,T% * 3),Grün
ERSTELLE 15,Rgb(255,T% * 1,0),Rot
ERSTELLE 10,Rgb(355 - T% * 3,254 - T% * 2,255 - T% * 1),Weiß
ERSTELLE 05,Rgb(192,192,192),Grau
ERSTELLE 20,Rgb(255,255 - T% * 2,0),Gelb
ERSTELLE 10,Rgb(255,T% * 3,254),Lila
ZEIGE %HWnd,-s2>1
DEINIT
Sleep 1000
end