Компьютерный форум

Компьютерный форум (http://www.hardforum.ru/)
-   Smalltalk (http://www.hardforum.ru/f171/)
-   -   Squeak. Рисование в окне как реализовать (http://www.hardforum.ru/t81577/)

imported_NIK_ 04.12.2009 03:59

Squeak. Рисование в окне как реализовать
 
Здравствуйте.

Создаю экземпляр SystemWindow
Код:

window:=SystemWindow new.
window openInWorld.
window position:10@10.
window setLabel: 'Model'.
window setWindowColor: Color yellow.

Как рисовать в этом окне, к примеру тем же Pen'ом?
Буду рад ответам, спасибо.

danio 04.12.2009 17:00

Pen рисует поверх формы, поэтому в SystemWindow нужно встроить форму и потом уже рисовать. В образе есть SketchMorph который и является оберткой вокруг Form и его можно взять в качестве примера.

Например, можно делать так:

Код:

window:=SystemWindow new.
window openInWorld.
window position:10@10.
window setLabel: 'Model'.
window setWindowColor: Color yellow.


sm := SketchMorph "Создается SketchMorph"
              withForm: "оборачивающий форму"
                    (Form extent: window extent). "размер которой, равен размеру панели системного окна"

window  "в системное окно "
    addMorph: sm  " "добавляется полученный SketchMorph  "
    frame: (0@0 extent: 1@1). "занимая его полностью: 0@0 и 1@1 - относительное смещение левого вернего и правого нижнего углов"

pen := sm penOnMyForm. "SketchMorph может сразу дать Pen поверх своей формы"

  pen defaultNib: 1. "3 строки рисования спирали из примера Pen>>example"
  pen combinationRule: Form over.
  1 to: 100 do: [:i | pen go: i*4. pen turn: 89].
   
sm revealPenStrokes. "после рисования с помощью Pen надо обновить прорисованное"


imported_NIK_ 05.12.2009 03:36

Спасибо.

imported_NIK_ 05.12.2009 18:52

danio, пытаюсь изменить цвет pen'a
Код:

pen := sm penOnMyForm. "SketchMorph может сразу дать Pen поверх своей формы"
pen color: Color red.

Но цвет рисунка не меняется, более того линии как-бы теряют в качестве - становятся не четкими...

В чем трабла?

danio 05.12.2009 19:40

Вызов Form class>>extent: по-умолчанию создает черно-белую форму (битовая глубина 1):

Код:

extent: extentPoint
    "Answer an instance of me with a blank bitmap of depth 1."

    ^ self extent: extentPoint depth: 1

В пример выше надо поставить вот так, чтобы рисовать в цвете:

Код:

  (Form extent: window extent depth: Display depth).


Часовой пояс GMT +4, время: 10:39.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.