WriteImagePixels
Monkey Forums/Monkey Programming/WriteImagePixels
| ||
| Hi , i'am new to Monkey and working on a little digging Game. I use the new ReadPixel and WritePixel Method from Monkey v63 and an little Module from Invaderjim http://www.monkeycoder.co.nz/Community/posts.php?topic=3482#36684 . Everytime i try to Draw the Image back to the Screen it vanishes from the Playfield. This is the part of my Code :
Method Render()
If Self.firstrender Then
Self.terrainPixels = GetImagePixels(img, 0, 0, Self.img.Width(),Self.img.Height())
stampPixels = GetImagePixels(tool, 0, 0, tool.Width(), tool.Height())
Self.firstrender = False
End If
If Self.stamp Then
Local sourcewidth:Int = Self.img.Width()
Local sourceheight:Int = Self.img.Height()
Local toolwidth:Int = Self.tool.Width()
Local toolheight:Int = Self.tool.Height()
Local mx:Int = 100 - ( toolwidth / 2 )
Local my:Int = 350 - ( toolheight / 2 )
Local ti : Int = sourcewidth * my + mx
Local loop:Int = 0
For Local y : Int = 0 Until toolheight
For Local x : Int = 0 Until toolwidth
If mx + x < sourcewidth And my + y < sourceheight And mx + x > -1 And my + y > -1
Local argb : Int
argb = terrainPixels[ ti + x ]
Local ga : Int = ( argb Shr 24 ) & $ff
argb = stampPixels[( y * toolwidth ) + x ]
Local ta : Int = ( argb Shr 24 ) & $ff
Local tr : Int = ( argb Shr 16 ) & $ff
Local tg : Int = ( argb Shr 8 ) & $ff
Local tb : Int = argb & $ff
If ga <> 0 And ta <> 0
If tr = 255 And tg = 255 And tb = 255
terrainPixels[ ti + x ] = 0
Else
'terrainPixels[ ti + x ] = stampPixels[( y * toolwidth ) + x ]
Endif
Endif
Endif
loop += 1
Next For
ti = ti + sourcewidth
Next For
'img.WritePixels( terrainPixels, 0, 0, img.Width(), img.Height() )
WriteImagePixels(img2, terrainPixels, 0, 0, img.Width(), img.Height())
Self.stamp = False
End If
'DrawImage(img, Self.x, Self.y)
DrawImage(img2, 50, 50)
End Method
|
| ||
| Hi Clonk. I think i found your problem. It seems that WritePixels works only with a new created image? [monkeycode] ' don't work img = LoadImage('foo.png') terrainPixels = GetImagePixels(img, 0, 0, Self.img.Width(),Self.img.Height()) WriteImagePixels(img, terrainPixels, 0, 0, img.Width(), img.Height()) 'work img = LoadImage('foo.png') new = CreateImage(300, 300) terrainPixels = GetImagePixels(img, 0, 0, Self.img.Width(),Self.img.Height()) WriteImagePixels(new, terrainPixels, 0, 0, img.Width(), img.Height()) [/monkeycode] Regards samowitsch |
| ||
| Hi samowitsch, thanks this work great. Greats Clonk |