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 |