Will ich meins auch mal posten
Simples Diagramm
-läßt sich überall positionieren
-frei Scalierbare Größe
-Senkrechte und Waagerechte Anzeige Modi´s
-was nicht ersichtlch war ist das beliebiege Anzeigen von Datenfeldern
bedeutet das die Function Datensätze von zB. 13-26 anzeigen kann
Diagramm ( ArrayVon, ArrayBis, WinStartX, WinStartY, BreiteX#, HoeheY#, Art )
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Graphics 800,600 Dim FPS(4) Dim geszaehl(90) Menge= 8 Global MausX , MausY For i=1 To 8 : Read geszaehl(i) : Next Data 78 , 31, 14, 113, 58, 89, 51, 101
Win_X1= 50 Win_Y1= 50 Win_X2= 700 Win_Y2 = 500
SetBuffer BackBuffer() While Not KeyDown(1) MausX = MouseX() MausY = MouseY() Text 9,9,"F1 = Hilfe" If KeyHit(57) Then Art = Art Xor 1 Menge = Menge + KeyHit(61) - KeyHit(60) If Menge < 2 Then Menge = 2 If Menge > 90 Then Menge = 90 Win_X1= Win_X1+ (KeyDown(205) - KeyDown(203)) If Win_X1< 0 Then Win_X1= 0 Win_Y1 = Win_Y1 + ( KeyDown(208) - KeyDown(200)) If Win_Y1 < 25 Then Win_Y1 = 25 Win_X2 = Win_X2 + (KeyDown(32) - KeyDown(30)) If Win_X2 + Win_X1> 799 Then Win_X1= Win_X1-1 Win_Y2 = Win_Y2 + (KeyDown(17) - KeyDown(31)) If Win_Y2 + Win_Y1> 599 Then Win_Y1= Win_Y1- 1 Diagramm ( 1 , Menge , Win_X1, Win_Y1, Win_X2 , Win_Y2 , Art ) Color $FF,$FF,$FF If KeyHit(59) Color Rand($FF),Rand($FF),Rand($FF) Rect 80,80,265,170 Color 0,0,0 Text 90,90,"Steuertasten = Verschieben" Text 90,110,"Space = Ansicht ändern" Text 90,130,"W A S D = Größe ändern" Text 90,150,"F2 - F3 = Spaltenanzahl ändern" Text 90,170,"ESC = Beenden" Text 90,190,"Maustasten = Werte ändern" Text 150,210,">>Taste<<" Flip WaitKey End If Color 0,0,0 Rect MausX ,MausY ,5,5 Color $FF,$FF,$FF Rect MausX ,MausY ,5,5,0 Text 700,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs() Flip 0 Cls Wend End Function Diagramm ( ArrayVon, ArrayBis, WinStartX, WinStartY, BreiteX#, HoeheY#, Art ) IndexMenge = ArrayBis - ArrayVon + 1 For t= ArrayVon To ArrayBis If MaxWert < geszaehl(t) Then MaxWert = geszaehl(t) Next SeedRnd(1) Select Art ::Case 0 BalkenX = BreiteX / IndexMenge Rect WinStartX -1 , WinStartY -1, BalkenX * IndexMenge +1,HoeheY +2 Factor# = HoeheY / MaxWert While IndexMenge > Zeiger Rx1 = Zeiger * BalkenX + WinStartX Rx2 = BalkenX - 1 Ry2 = geszaehl( Zeiger + ArrayVon ) * Factor Ry1 = WinStartY + HoeheY - Ry2 Color Rand($FF),Rand($FF),Rand($FF) Rect Rx1 , Ry1 , Rx2 , Ry2 Color 0,0,0 Text Rx1 + BalkenX / 2 + 1 , Ry1 + 1 , geszaehl( Zeiger + ArrayVon ) , 1 Color $FF,$FF,$FF Text Rx1 + BalkenX / 2 , Ry1 ,geszaehl( Zeiger + ArrayVon ),1 If RectsOverlap( Rx1 , WinStartY , Rx2 , HoeheY , MausX , MausY , 4, 4) Then Mf(Zeiger + ArrayVon) End If Zeiger = Zeiger + 1 Wend ::Case 1 BalkenY = HoeheY / IndexMenge Rect WinStartX - 1 , WinStartY-1 , BreiteX+2 , BalkenY * IndexMenge + 2 , 1 Factor# = BreiteX / MaxWert While IndexMenge > Zeiger Rx1 = WinStartX Ry1 = WinStartY + Zeiger * BalkenY Rx2 = geszaehl( Zeiger + ArrayVon ) * Factor Ry2 = BalkenY - 1 Color Rand($FF),Rand($FF),Rand($FF) Rect Rx1 ,Ry1 , Rx2 , Ry2 , 1 Color 0,0,0 Text Rx1 +1 , Ry1 + BalkenY/2 +1, geszaehl(Zeiger + ArrayVon),0,1 Color $FF,$FF,$FF Text Rx1 , Ry1 + BalkenY /2, geszaehl(Zeiger + ArrayVon),0,1 If RectsOverlap ( Rx1 + 1, Ry1 + 1, BreiteX ,Ry2 , MausX , MausY ,4 ,4) Then Mf( Zeiger + ArrayVon ) End If Zeiger = Zeiger + 1 Wend End Select End Function
Function Mf(x) If MouseDown(1) Then geszaehl(x) = geszaehl(x) + 1 If MouseDown(2) Then If geszaehl(x) > 0 Then geszaehl(x) = geszaehl(x) - 1 End If End If End Function
habe noch eine FPS eingebaut und Mousehit gegen Mousedown ersetzt
|