2016-08-09 190 views
0

Ich versuche, ein Rauschbild auf kleinen grundlegenden erstellen, aber ich kann nicht das Bild schnell genug, um realistisch aussehen zu laden. Ich habe versucht mit ldarray, aber es ist immer noch nicht schnell genug.erstellen schnelle Bilder auf Smallbasic

hier ist der aktuelle Code im mit:

GraphicsWindow.Left = 0 'positions graph 
GraphicsWindow.Top = 0 
GraphicsWindow.Height = 240 
GraphicsWindow.Width = 320 
numpix = 320 * 240 'creates number of indices for ldarray 
pixels = LDArray.Create(numpix) 'creates 1D array where color values will be  stored 
While 1=1 
setcolor() 
importcolor() 
EndWhile 

Sub setcolor 
For h = 1 To numpix 
randomcolor = Math.GetRandomNumber(2) 
If randomcolor = 1 Then 
    ldarray.SetValue(pixels,h,"black") 'sets the pixel color to black or white 
Else 
    ldarray.SetValue(pixels,h,"white") 
EndIf 
EndFor 
EndSub 


sub importcolor 
'prints out the image 
For h = 1 To 320 
For w = 1 To 240 
    i = i + 1 
    color = LDArray.GetValue(pixels,i) 
    GraphicsWindow.SetPixel(h,w,color) 
EndFor 
EndFor 

EndSub 

Sie können später Programmformat um, durch den gesamten Text auswählen und dann „Format Programm“

auch zu klicken, wenn Sie mir schreiben kann helfen ein fps counter, das wäre extrem hilfreich, weil ich keine ahnung habe, wo ich damit anfangen soll.

Antwort

0

Nun, das scheint ein bisschen schneller zu sein, aber nicht perfekt. Dies ist eine der schwierigeren Aufgaben, die Sie ausführen können, weil es jeden einzelnen der 76.800 Pixel zur gleichen Zeit randomisieren muss. Sehr schwer.

GraphicsWindow.Left = 0 'positions graph 
GraphicsWindow.Top = 0 
GraphicsWindow.Height = 240 
GraphicsWindow.Width = 320 


Randcol[1] = "Black" 
Randcol[2] = "White" 

'Load a random image of the right size into the imagelist 
img = ImageList.LoadImage("http://www.hdiphonewallpapers.us/phone-wallpapers/freewallpaper/12954B94004N0-1Da.jpg") 
LDImage.OpenWorkingImage(img) 

While 1=1 
    For x = 1 To 320 
    For y = 1 to 240 
     LDImage.SetWorkingImagePixel(img,x,y,Randcol[Math.GetRandomNumber(2)]) 
    EndFor 
    EndFor 
    LDImage.CloseWorkingImage(img) 
    GraphicsWindow.DrawImage(img,0,0) 
    LDImage.OpenWorkingImage(img) 
EndWhile 
+0

dies funktioniert, sicher ist es ein bisschen langsam auf die Bilder Geschwindigkeit auf thins (Small die Schaffung der Regel nicht die schnellste“ist, aber es ist viel besser als alles, was ich hätte, wenn aus. Jetzt weiß ich, wie man benutze ldimages besser. – MSG2