ich habe ein kleinen "Grafikprogramm" erstellt, welches auf Basis einer 50x50-Matrix ein Raster darstellt, und zwar im Grundzustand mit 50 x 50 weißen Images mit einer Größe von 10x10Pixel je Images. Wenn eines dieser 10x10-Pixel-Images angeclickt wird, ändert es die Farbe in schwarz (und umgekehrt). So weit so gut.
Jetzt soll das Programm aber auch die Möglickeit haben, die Matrix zu verändern, maximal 200 Kästchen breit und ca. 100 Kästchen hoch.
Das funktioniert auch, allerdings, und hier kommt das Problem, dauert das ziemlich lange, bis die Matrix von 200x100 Images aufgebaut und dargestellt wird.
Gibt es hier eine elegante Möglichkeit, um diesen Aufbau zu beschleunigen?
Hier ist der Code:
Code: Alles auswählen
musterbreite.w
musterhoehe.w
nummer.w
musterbreite=50
musterhoehe=50
nummer=1
Dim muster_bit.s(200,100)
If OpenWindow(0, 0, 0, 50, 50,#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered, "KnitAs - Assistent zum Erstellen und Bearbeiten von Strickmustern")
LoadImage(0,"d:\privat\purebasic\schwarz.bmp") And LoadImage(1,"d:\privat\purebasic\weiss.bmp")
neu:
CreateGadgetList(WindowID(0))
ScrollAreaGadget(0,0,0,800,600,1000, 1000,10)
OpenGadgetList(0)
For y=0 To musterhoehe-1
For I=0 To musterbreite-1
ImageGadget(nummer,i*10,y*10,10,10,UseImage(1))
nummer=nummer+1
Next i
Next y
CloseGadgetList()
For y=0 To musterhoehe-1 ;array einlesen
For I=0 To musterbreite-1
muster_bit(i,y)="1"
Next i
Next y
Repeat : EventID = WaitWindowEvent()
If eventid=#PB_EventGadget
;-----------Berechnung, welches MusterBit verändert werden muss--------------------
ausgewaehltes_bild.w=EventGadgetID()-1
;-------welche reihe?---------------------
reihe.w=Int(ausgewaehltes_bild/(musterbreite))
;-------welche Position?
position.w=ausgewaehltes_bild-(musterbreite*reihe)
Select muster_bit(reihe,position) ;neuen images setzten 1->0 oder 0->1
Case "0"
muster_bit(reihe,position)="1"
OpenGadgetList(0)
ImageGadget(EventGadgetID(),position*10,reihe*10,10,10,UseImage(1))
CloseGadgetList()
Case "1"
muster_bit(reihe,position)="0"
OpenGadgetList(0)
ImageGadget(EventGadgetID(),position*10,reihe*10,10,10,UseImage(0))
CloseGadgetList()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
LG