. Стиллмен, Дж. Грин - Изучаем 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