[Newbies] How to draw a single pixel with permanence?
Lawson English
lenglish5 at cox.net
Thu Apr 29 13:58:21 UTC 2010
Bert Freudenberg wrote:
> On 29.04.2010, at 15:31, Lawson English wrote:
>
>> My point is, how do I "paint it" into a form
>>
>
> colorAt:put: is okay for that (though slow).
>
>
>> and then display it?
>>
>
> See the Canvas protocol "drawing-images".
>
>
>> my question concerns getting what I've poked into the form to stay on the screen after I've released the mouse.
>>
>
> Whenever #drawOn: is called, you need to draw it again.
>
>
>> Obviously I'm not caching the results as I thought I was.
>>
>
> No, your just not drawing where you think you are. Again: you should not draw into the Canvas's form directly. Use the canvas protocol.
>
> What's happening is that when you drag the morph in the hand, the canvas has a different transform than when it is resting in the world. Drawing directly into the canvas's form will ignore this transform. So it works sometimes but not always.
>
>
drawOn: aCanvas
super drawOn: aCanvas.
aCanvas form colorAt: "self topLeft +"(30 at 30) put: Color black.
Does NOT draw the dot at the upper left corner of the squeak window, but
when I drag the morph around, the dot is offset as I would expect. When
I release the mouse, the dot disappears.
However:
drawOn: aCanvas
super drawOn: aCanvas.
aCanvas form colorAt: self topLeft +(30 at 30) put: Color black.
Draws the dot where I expected though it doesn't draw it during the
mouse down.
Also, why would the From>>colorAt:put: be slower than the Canvas
drawing methods which are a good bit more indirect?
Lawson
More information about the Beginners
mailing list