Draw bitmaps pixel by pixel

Michiel Spape Michiel.Spape at nottingham.ac.uk
Wed Jun 16 16:36:17 UTC 2010


Hi,
Drawing things pixel by pixel is quite easily implemented, given you know enough about programming (I seem to remember you do) - drawing bmp's pixel for pixel is more difficult, I expect (since A: you'd have to randomise pixels B: fill a file with it, then C: draw the file, whereas just doing the whole randomising in canvas saves step B and C). I think I even have something:

Dim canvasmask as Mask
Dim cnvs as Canvas

Sub buildMask (masksize as integer, nCircles as integer, circlesize as integer)
	dim functiondur as long	
	functiondur = clock.read
	dim cCircle as integer
	dim onetothree as integer
	dim ppoint as point
	for cCircle = 1 to nCircles
		onetothree = random (1,3)
		if onetothree = 1 then cnvsmask.FillColor = CColor("black")	
		if onetothree = 2 then cnvsmask.FillColor = CColor("white")	
		if onetothree = 3 then cnvsmask.FillColor = CColor("gray")	
		cnvsmask.Circle random (display.xres / 2 - masksize / 2, display.xres / 2 + masksize / 2), random (display.yres / 2 - masksize / 2, display.yres / 2 + masksize / 2), circlesize / 2
	next cCircle
 	debug.print "Mask took " & (clock.read - functiondur) & " ms to build"
End Sub

Sub drawmask (masksize as integer)
	dim midrect as rect
	midRect.Left = display.xres / 2 - masksize/2
	midRect.Right = display.xres / 2 + masksize/2
	midRect.Top = display.yres / 2 - masksize/2
	midRect.Bottom = display.yres / 2 + masksize /2
	cnvs.copy cnvsmask, midrect, midrect
End Sub

... I think that should work. Anyway, dump the whole thing into your userscript, then use the following in an inline to A: build the mask (might take some time, hence the debugging script), B: show the mask (it's useful to do this separately for timing issues)

'probably do this at the beginning of the trial
buildMask 100, 50, 10 'draws 50 circles of size 10 in a mask of size 100 (all pixels)

'do this when you want to show stuff
Display.waitforverticalblank 'for sync issues, not sure about exact syntax.
Drawmask 100


...of course, my code here was mainly written (and subsequently abolished) for shape-based (circle) masking. More effective code can be written if you just want to do pixel-by-pixel colouring. I imagine you get the picture.

Cheers,
Mich

Michiel Spapé
Research Fellow
Perception & Action group
University of Nottingham
School of Psychology


-----Original Message-----
From: e-prime at googlegroups.com [mailto:e-prime at googlegroups.com] On Behalf Of Tobias
Sent: 16 June 2010 12:15
To: E-Prime
Subject: Draw bitmaps pixel by pixel

Hej together,

I want to program a random mask for a visual attention experiment. The
idea is, that the mask should be randomly created each trial because
there are some hints that subjects "learn" to ignore a mask if it is
repeatedly used. So what I think of is a white noise or something. Is
there a way in E-Prime to create bitmaps pixel by pixel with an
inline?

Cheers,
Tobias

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.

This message has been checked for viruses but the contents of an attachment
may still contain software viruses which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list