and now with coffee cup stain:
[code]
dim p as new Picture(g.width, g.height, 32)
dim s as RGBSurface = p.RGBSurface
dim rnd as new Random
For y As Integer = 0 To p.height - 1
For x As Integer = 0 To p.width - 1
//do something interesting, based on the xy coords of the pixel.
dim minRange as integer = 230
dim maxRange as integer = 255
dim red as integer = rnd.InRange( minRange, maxRange )
dim green as integer = rnd.InRange( minRange, maxRange )
dim blue as integer = rnd.InRange( minRange, maxRange )
s.Pixel(x, y) = rgb( red, green, blue )
Next
Next
// add a stain: use a mask m
dim m as new Picture(g.width, g.height, 32)
// fill the mask with a black background = fully drawn
m.Graphics.ForeColor = rgb( 50, 50, 50 ) // &c000000 // grey, so you can have darker AND lighter spots
m.Graphics.FillRect( 0, 0, g.Width, g.Height )
// Lets draw a bigger darker circle, like a glass stain
dim rndPoxitionX as integer = rnd.InRange( -10, g.Width - 100 )
dim rndPoxitionY as integer = rnd.InRange( -10, g.Height - 100 )
dim rdnCircleDiameter as integer = rnd.InRange( 250, 400 )
// set greyness
dim minRange as integer = 100
dim maxRange as integer = 200
dim greyValue as integer = rnd.InRange( minRange, maxRange )
// draw ONE circle aka stain with random greyness but DARKER and in steps
for i as integer = 1 to 20 // lets do 100 with random diameter
m.Graphics.ForeColor = rgb( greyValue + i, greyValue + i, greyValue + i ) // some form of darkish grey
// draw grey circles at random position
m.Graphics.DrawOval( rndPoxitionX + i, rndPoxitionY + i, rdnCircleDiameter - i - i, rdnCircleDiameter - i - i )
next i
// make drops of different shades of darker grey (= lighter on picture) on the mask
for i as integer = 1 to 4000
rndPoxitionX = rnd.InRange( -10, g.Width - 10 )
rndPoxitionY = rnd.InRange( -10, g.Height - 10 )
rdnCircleDiameter = rnd.InRange( 2, 8 )
// draw some circles aka stains with random greyness but LIGHTER
minRange = 0
maxRange = 40
greyValue = rnd.InRange( minRange, maxRange )
m.Graphics.ForeColor = rgb( greyValue, greyValue, greyValue ) // some form of darkish grey
// draw grey circles at random position
m.Graphics.FillOval( rndPoxitionX, rndPoxitionY, rdnCircleDiameter, rdnCircleDiameter )
next i
p.ApplyMask( m )
if DrawMask then
g.drawPicture( m, 0, 0 )
else
g.drawPicture( p, 0, 0 )
end if
raiseEvent myPaint( g )[/code]