> 1 <

Автор Сообщение

vkhomyakov

Members


Статус

6 сообщений

Где: Russia Irkutsk
Род занятий:
Возраст:

#4159   2011-04-11 14:21 GMT+3 часа(ов)      
Подскажите пожалуйста!
Не могу отобразить созданные элементы в canvas%.
На приведенном примере отображаются только элементы, которые
заданы во время создания объекта canvas%(cv).
А те, которые задаются после, не отображаются.
Подскажите что не так.

#lang racket/gui
 
(define frame (new frame%
[label "Example"]
[width 300]
[height 300]))
(define cv (new canvas% [parent frame]
[paint-callback
(lambda (canvas dc)
(send dc set-scale 3 3)
(send dc set-text-foreground "blue")
(send dc draw-text "Don't Panic!" 0 0)
)]
))
(send frame show #t)
 
;; эти элементы не отображаются
(send (send cv get-dc) draw-line 1 10 20 20)
(send (send cv get-dc) draw-text "1" 10 20)

отредактировал(а) vkhomyakov: 2011-04-11 14:30 GMT+3 часа(ов)

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#4160   2011-04-11 15:02 GMT+3 часа(ов)      
Исправьте paint-callback. Т.к. paint-callback вызывается после каждого обновления окна.
Можно сделать так
#lang racket/gui
 
(define subpaint
(make-parameter (lambda (canvas dc) (void))))
 
(define frame (new frame%
[label "Example"]
[width 300]
[height 300]))
 
(define cv (new canvas% [parent frame]
[paint-callback
(lambda (canvas dc)
(send dc set-scale 3 3)
(send dc set-text-foreground "blue")
(send dc draw-text "Don't Panic!" 0 0)
((subpaint) canvas dc))]))
 
(send frame show #t)
 
(subpaint
(lambda (canvas dc)
(send dc draw-line 1 10 20 20)
(send dc draw-text "1" 10 20)))

отредактировал(а) misha: 2011-04-11 15:19 GMT+3 часа(ов)

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#4162   2011-04-11 16:07 GMT+3 часа(ов)      
Также можно переопределить событие on-paint.

vkhomyakov

Members


Статус

6 сообщений

Где: Russia Irkutsk
Род занятий:
Возраст:

#4165   2011-04-11 18:46 GMT+3 часа(ов)      
Большое спасибо!
Цитата
misha :
Также можно переопределить событие on-paint.


Попробую сам разобраться, так сказать в целях обучения.
Если не получится спрошу совета.
Пока еще не все конструкции языка понятны.

отредактировал(а) vkhomyakov: 2011-04-11 19:05 GMT+3 часа(ов)
> 1 <


Онлайн :

0 пользователь(ей), 29 гость(ей) :




Реклама на сайте: