14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

эл<strong>е</strong>м<strong>е</strong>нты управл<strong>е</strong>ни<strong>е</strong> и графич<strong>е</strong>ски<strong>е</strong> фрагм<strong>е</strong>нты<br />

О fOpMOM Hive и Field тр<strong>е</strong>бу<strong>е</strong>тся открыто<strong>е</strong> свойство R e n d e r e r<br />

Добавьт<strong>е</strong> свойство общ<strong>е</strong>го доступа R e n d e r e r к об<strong>е</strong>им формам:<br />

, , ______ А оёавьт <strong>е</strong> эт о свойство к об<strong>е</strong>ым<br />

public Renderer Renderer { get; set; } 'форМаМ-<br />

He за- f О т*, ^ р <strong>е</strong> д а к тX и р у<br />

ЖЛ.<br />

й тж ^<br />

<strong>е</strong> о б ъ я в - л <strong>е</strong>—----- н и <strong>е</strong> ------- класса R e n d e r e r сл<strong>е</strong>дующим V образом;<br />

м.<br />

p u b l i c c l a s<br />

5ydt>me бадЬт <strong>е</strong>\ ^ _ _______________________ Г.Т_______<br />

R e n d e r e r . То ж <strong>е</strong> са м о <strong>е</strong> нужно сд<strong>е</strong>лать для классов W o r l d , Hive, B e e и F l o w e r и для п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния<br />

B e e s t a t e .<br />

добавить<br />

эти<br />

моди­<br />

Экз<strong>е</strong>мпляр R e n d e r e r {) созда<strong>е</strong>тся в код<strong>е</strong> кнопки O pen и в м<strong>е</strong>тод<strong>е</strong> R e s e t S i m u l a t o r ( ) .<br />

фика­<br />

торы У далит<strong>е</strong> в с <strong>е</strong> в ы зо в ы м <strong>е</strong>т о д а renderer- R e s e t О . Зат<strong>е</strong>м обновит<strong>е</strong> конструктор объ<strong>е</strong>кта<br />

доступа!<br />

h i v e F o r m . R e n d e r e r = t h i s ;<br />

М<strong>е</strong>тод ResetQ удалял с формы эл<strong>е</strong>м<strong>е</strong>нты<br />

R e n d e r e r , чтобы задать свойство R e n d e r e r для об<strong>е</strong>их форм:<br />

f i e l d F o r m . R e n d e r e r = t h i s ;<br />

управл<strong>е</strong>ний. HO т<strong>е</strong>п<strong>е</strong>рь <strong>е</strong>му н<strong>е</strong>ч<strong>е</strong>го удалять.<br />

О<br />

Настройт<strong>е</strong> двойную буцї<strong>е</strong>ризацию цюрм Hive и Field<br />

Удалит<strong>е</strong> из конструктора формы Hive код задания фонового изображ<strong>е</strong>ния. Зат<strong>е</strong>м удалит<strong>е</strong> вс<strong>е</strong><br />

эл<strong>е</strong>м<strong>е</strong>нты управл<strong>е</strong>ния из об<strong>е</strong>их форм и п р и св о й т <strong>е</strong> св ой ств у D o u b le B u f f e r e d зн а ч <strong>е</strong>н и <strong>е</strong> t r u e .<br />

Добавьт<strong>е</strong> к формам обработчик события Paint. Он записан для формы Hive, для формы Field<br />

он отлича<strong>е</strong>тся вызовом R e n d e r e r .P a i n t F i e l d {) вм<strong>е</strong>сто R e n d e r e r .P a i n t H i v e ():<br />

p r i v a t e v o i d H i v e F o r m _ P a i n t ( o b j e c t s e n d e r , P a i n t E v e n t A r g s e ) { J<br />

R e n d e r e r . P a i n t H i v e ( e . G r a p h ic s ) ;<br />

g g s двойной буф<strong>е</strong>ризации ваши<br />

} формы будут м<strong>е</strong>рцать!<br />

Удал им из визуализатора код на основ<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нтов управл<strong>е</strong>ния и добавим граф ику<br />

Вот что вам нужно сд<strong>е</strong>лать:<br />

★ Удалит<strong>е</strong> словари. Такж<strong>е</strong> вам больш<strong>е</strong> н<strong>е</strong> понадобятся эл<strong>е</strong>м<strong>е</strong>нт B e e C o n t r o l и м<strong>е</strong>тоды<br />

R e n d e r (),D r a w B e e s () и D r a w F l o w e r s ().<br />

★ Для хран<strong>е</strong>ния изображ<strong>е</strong>ний добавьт<strong>е</strong> поля В і t m a p с им<strong>е</strong>нами H i v e Ins ide. H i v e O u t s ide<br />

и Flower. Создайт<strong>е</strong> два массива B i t m a p [] B e e A n i m a t i o n L a r g e и B e e A n i m a t i o n S m a l l .<br />

В каждом из них будут хранится по ч<strong>е</strong>ты р<strong>е</strong> изображ<strong>е</strong>ния пч<strong>е</strong>лы: больши<strong>е</strong> 40x40 и мал<strong>е</strong>ньки<strong>е</strong><br />

20x20. Создайт<strong>е</strong> м<strong>е</strong>тод I n i t i a l i z e l m a g e s О , масштабирующий р<strong>е</strong>сурсы, пом<strong>е</strong>щающий<br />

их в эти ПОЛЯ и вызывающий их из конструктора класса Renderer.<br />

★ Добавьт<strong>е</strong> м<strong>е</strong>тод P a i n t H i v e О , который б<strong>е</strong>р<strong>е</strong>т в кач<strong>е</strong>ств<strong>е</strong> парам<strong>е</strong>тра объ<strong>е</strong>кт G r a p h i c s<br />

и рису<strong>е</strong>т на н<strong>е</strong>м ул<strong>е</strong>й. Н ачнит<strong>е</strong> с голубого прямоугольника, зат<strong>е</strong>м м<strong>е</strong>тодом D r a w -<br />

I m a g e U n s c a l e d () нарисуйт<strong>е</strong> ул<strong>е</strong>й изнутри, а м<strong>е</strong>тодом D r a w I m a g e U n s c a l e d () - находящихся<br />

внутри улья пч<strong>е</strong>л.<br />

★ Добавьт<strong>е</strong> м<strong>е</strong>тод P a i n t F i e l d (), рисующий голубой прямогоульник в в<strong>е</strong>рхн<strong>е</strong>й части<br />

формы и з<strong>е</strong>л<strong>е</strong>ный —в нижн<strong>е</strong>й. Свойства C l i e n t S i z e и C l i e n t R e c t a n g l e укажут разм<strong>е</strong>р<br />

каждой области. М<strong>е</strong>тодом F i l l E l l i p s e {) нарисуйт<strong>е</strong> ж<strong>е</strong>лто<strong>е</strong> солнц<strong>е</strong>, м<strong>е</strong>тодом<br />

D r a w L i n e () - в<strong>е</strong>тку, с которой свиса<strong>е</strong>т ул<strong>е</strong>й, а м<strong>е</strong>тодом D r a w I m a g e U n s c a l e d {) - вид<br />

улья снаружи. Нарисуйт<strong>е</strong> цв<strong>е</strong>ты, а п<strong>е</strong>р<strong>е</strong>д ними - пч<strong>е</strong>л (используйт<strong>е</strong> для этого мал<strong>е</strong>ньки<strong>е</strong><br />

картинки).<br />

★ П о м н и т <strong>е</strong> , что м<strong>е</strong>тод A n i m a t e B e e s {) зада<strong>е</strong>т знач<strong>е</strong>ни<strong>е</strong> поля cell.<br />

дальш<strong>е</strong> ► 621

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!