[racket] Drawing in the Canvas from outside

From: Alexandr M (rus314 at gmail.com)
Date: Tue Jan 27 13:26:30 EST 2015

>
> evaluate (my-draw) at repl


Yes, in that case it works.
Initially I ran it just from the code area in DrRacket (I added call
(my-draw) at the end). But after calling this function from REPL it worked.
Thanks!

On 27 January 2015 at 20:20, Matthias Felleisen <matthias at ccs.neu.edu>
wrote:

>
> My code is tested. Copy, paste, run, evaluate (my-draw) at repl. If it
> doesn't work, report the exact actions you perform to get a failure.
>
>
>
>
> On Jan 27, 2015, at 1:08 PM, Alexandr M wrote:
>
> Thanks,
>
> I copied your example and it seems it doesn't work ..
>
> If I comment the code inside [paint-callback .. it also doesn't draw
> anything.
>
> In general I need to send 'messages'  from 'outside' to the canvas object
> to visualize numerical experiment performed by separate function.
>
> I can implement experiment itself inside [pain-callback (lambda ...
> functions ) under definition of canvas, but it looks strange and clumsy.
> Sometimes I need just to run computations, but sometimes I need also to do
> visualization with animation.
>
> How could I achieve this?
>
> Best regards,
> Alex
>
> On 27 January 2015 at 19:54, Matthias Felleisen <matthias at ccs.neu.edu>
> wrote:
>
>>
>> Do you want something like this:
>>
>> #lang racket/gui
>>
>> (define frame (new frame% [label ""] [width 700] [height 500]))
>> (define canvas
>>  (new canvas%
>>       [parent frame]
>>       [paint-callback
>>        (lambda (c dc)
>>          (send dc draw-line 1 1 100 100))]))
>> (send frame show #true)
>>
>> (define (my-draw)
>>   (send (send canvas get-dc) draw-line 100 100 0 200))
>>
>>
>> -- Matthias
>>
>>
>>
>> On Jan 27, 2015, at 12:09 PM, Alexandr M wrote:
>>
>> > Hello,
>> >
>> > How can I draw the line (for example) in the canvas object defined as:
>> >
>> > (define frame (new frame% [label ""] [width 700] [height 500]))
>> > (define canvas (new canvas% [parent frame]
>> >   ;;;; - call from outside:  [paint-callback (lambda (c dc) (send dc
>> draw-line 1 1 10 10) )]
>> >   ))
>> >
>> > by calling a function like
>> >
>> > (define (MyDraw canvas-obj) .... (draw-line 1 1 10 10))
>> >
>> > ?
>> >
>> > --
>> > Best regards,
>> > Alex
>> > ____________________
>> >  Racket Users list:
>> >  http://lists.racket-lang.org/users
>>
>>
>
>
> --
> Best regards,
> Alexander Maslov
>
>
>


-- 
Best regards,
Alexander Maslov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150127/5e7a70a0/attachment.html>

Posted on the users mailing list.