Draw over image with background...?

BlitzMax Forums/BlitzMax Beginners Area/Draw over image with background...?

Arowx(Posted 2010) [#1]
Would I be able to take a circular chunk out of a square image..

E.g.

Square bit of cheese
Mouse takes circular bite out of cheese

Now if I grab a square of the background image and mask it with a circular image I should be able to draw a chunk of the background over the cheese, making it look like a bite was taken out of it?


Midimaster(Posted 2010) [#2]
I would suggest to lock the image with LockImage() to get a TPixMap. Now you can manipulte the picture. E.g. change the Pixels of the "eaten" parts to transparent (Color=0) WritePixel(). At the end you unlock the picture with UnlockImage().

In the next drawing the transparent part of the image will show the background.

Graphics 640,480,0,60

' example needs any picture (>50x50 pix)
Image:TImage=LoadImage(".....
PixMapImage:TPixmap=LockImage(Image)

For Rad%=0 To 180
	Local Sinus#,Cosin#
	Sinus=Sin(Rad)*10
	Cosin=Cos(Rad)*10
    For X%=0 To sinus
		WritePixel(PixMapImage, X, 20+Cosin, 0)
    Next
Next
UnlockImage(Image)


Setcolor 255,0,0
DrawRect 0,0,640,480
Setcolor 255,255,255
DrawImage Image,10,10
Flip
WaitKey



Arowx(Posted 2010) [#3]
The plan was not to alter the image of the cheese just to draw over it in the shape of a bite with the background pattern aligned.

I can grasp how this would be done in theory with a polygon shaped bite and the background texture applied or a mask/stenciled image?


MGE(Posted 2010) [#4]
At the root of your question is basically "terrain deformation". But since Bmax still doesn't have "reliable" render to texture for both dx and ogl, you're left with doing things a bit harder. Rather then re-inventing the wheel, there's a good discussion with ideas, tips, etc, here:

http://www.blitzbasic.com/Community/posts.php?topic=82438#929874


Midimaster(Posted 2010) [#5]
What should be the sense of drawing again something on front of a cheese, what is already behind the cheese?

e.g if the cheese moves, you will have to do a lot of painting in your method. While the transparent way still works without doing anything.

What would be the disadvantage of my way in your game? Perhaps I did not understand the traget you follow...


Arowx(Posted 2010) [#6]
What if there are multiple 'cheeses' and they regrow over time?


Zeke(Posted 2010) [#7]
use multiple images

i made simple demo:

This is almost same as Midimaster's code, but here i just reset pixels alpha value, so when you need to show pixel again. just set pixel alpha to 255.


matibee(Posted 2010) [#8]
I had an idea for deformable terrain tonight so I knocked this together.

It could easily be modified to handle textures. In that code I only subtract but addition would be easy too. The tricky bit would be if you needed to handle rotation.