14.02.2017 Views

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

д л я у в<strong>е</strong>лич<strong>е</strong>ния и р и и а ь и д и гсльиис 1И Д^иао^гио плпо^си/и'ю«! \<br />

м<strong>е</strong>тод, м<strong>е</strong>няющий разм<strong>е</strong>р изображ<strong>е</strong>ния в мом<strong>е</strong>нт <strong>е</strong>го загрузки, что-<br />

^<br />

б ы для о т о б р а ж <strong>е</strong> н и я пч<strong>е</strong>л и ф о н о в о г о рисунка улья пользоваться у ж <strong>е</strong> ^ у 1Х р а Ж Н 0 Н и 0<br />

п т м а с ш т а б и п о в а н н ы м и в<strong>е</strong>осиями.<br />

^<br />

9 М <strong>е</strong>тод R e s i z e lm a g e для визуализатора<br />

Вс<strong>е</strong> изображ<strong>е</strong>ния про<strong>е</strong>кта хранятся как объ<strong>е</strong>кты Bitmap. Вот статич<strong>е</strong>ский м<strong>е</strong>тод, м<strong>е</strong>няющий их<br />

разм<strong>е</strong>р, который нужно добавить в класс R e nderer:<br />

p u b l i c s t a t i c B it m a p R e s iz e lm a g e ( B it m a p p i c t u r e , i n t w i d t h , i n t h e i g h t ) {<br />

B it m a p r e s i z e d P i c t u r e = n e w B i t m a p ( w i d t h , h e i g h t ) ;<br />

u s i n g (G rap h ics g r a p h ic s = G r a p h i c s . F r o m l m a g e ( r e s i z e d P i c t u r e ) ) {<br />

g r a p h i c s - D r a w l m a g e ( p i c t u r e , 0 , 0 , w i d t h , h e i g h t ) ;<br />

L t u r n r e s i z e d P i c t u r e - \ Ч т о тако<strong>е</strong> о б ш кт g ra p h ics и как работ а<strong>е</strong>т<br />

^ r e t u r n r e s i z e d P i c t u <strong>е</strong> , данный м<strong>е</strong>т од, М И поговорим чут ь поздн<strong>е</strong><strong>е</strong>.<br />

@ М <strong>е</strong>тод R e s i z e C e l l s для эл<strong>е</strong>м<strong>е</strong>нта B e e C o n t r o l<br />

Эл<strong>е</strong>м<strong>е</strong>нт B e e C o n t r o l хранит собств<strong>е</strong>нны<strong>е</strong> объ<strong>е</strong>кты B i t m a p в вид<strong>е</strong> массива. Вот код, заполняющий<br />

этот массив и дающий каждому эл<strong>е</strong>м<strong>е</strong>нту правильный разм<strong>е</strong>р:<br />

О б ъ <strong>е</strong> к т ы B itm a p , хранящи<strong>е</strong> картинки с изображ<strong>е</strong>ни<strong>е</strong>м пч<strong>е</strong>л,<br />

p r i v a t e B it m a p [] c e l l s = ne w B it m a p [ 4 ] ; при помощи м<strong>е</strong>тода ResizelmageQ. X<br />

p r i v a t e v o i d R e s i z e C e l l s () { \<br />

c e l l s [0 ] = R e n d e r e r . R e s i z e I m a g e ( P r o p e r t i e s . R e s o u r c e s . B e e _ a n i m a t i o n _ l , W id t h , H e i g h t ) ;<br />

c e l l s [1] = R e n d e r e r . R e s i z e I m a g e ( P r o p e r t i e s . R e s o u r c e s . B e e _ a n i m a t i o n _ 2 , W id t h , H e i g h t ) ; \ J<br />

c e l l s [ 2 ] = R e n d e r e r . R e s i z e l m a g e ( P r o p e r t i e s . R e s o u r c e s . B e e _ a n i m a t i o n _ 3 , W id t h , H e i g h t ) r > ь С<br />

c e l l s [3 ] = R e n d e r e r . R e s i z e l m a g e ( P r o p e r t i e s . R e s o u r c e s . B e e _ a n i m a t i o n _ 4 , W id t h , H e ig h t )<br />

}<br />

@ П усть оп<strong>е</strong>ратор s w i t c h работа<strong>е</strong>т с массивом cells, а н<strong>е</strong> с р<strong>е</strong>сурсами<br />

О п<strong>е</strong>ратор switch обработчика событий T i c k зада<strong>е</strong>т свойство B a c k g r o u n d l m a g e :<br />

B a c k g r o u n d lm a g e = P r o p e r t i e s . R e s o u r c e s . B e e _ a n i m a t i o n _ l ;<br />

Зам<strong>е</strong>нит<strong>е</strong> Properties .Resources .Bee_animation_l на cells [0 ].Изам<strong>е</strong>нит<strong>е</strong> и остальны<strong>е</strong> строки<br />

case, вв<strong>е</strong>дя на вторую позицию c e l l s [1 ], на тр<strong>е</strong>тью —c e l l s [2 ], на ч<strong>е</strong>тв<strong>е</strong>ртую —c e l l s [3 ], на<br />

пятую - c e l l s [2 ], на позицию default - c e l l s [1 ], чтобы отображались только отмасштабированны<strong>е</strong><br />

рисунки.<br />

Добавить вызов м <strong>е</strong>тода R e s i z e C e l l s О ДЛЯ эл<strong>е</strong>м<strong>е</strong>нта B e e C o n t r o l<br />

Новый м<strong>е</strong>тод R e s i z e C e l l s () долж<strong>е</strong>н вызываться в нижн<strong>е</strong>й части конструктора. Зат<strong>е</strong>м дважды<br />

щ<strong>е</strong>лкнит<strong>е</strong> на строчк<strong>е</strong> B e e C o n t r o l в окн<strong>е</strong> Properties. Откройт<strong>е</strong> в этом окн<strong>е</strong> страницу Events (щ<strong>е</strong>лкнув<br />

на значк<strong>е</strong> с изображ<strong>е</strong>ни<strong>е</strong>м молнии) и дважды щ<strong>е</strong>лкнит<strong>е</strong> на строчк<strong>е</strong> Resize, чтобы добавить<br />

обработчик этого события. Новый обработчик такж<strong>е</strong> долж<strong>е</strong>н вызывать м<strong>е</strong>тод R e s i z e C e l l s (),<br />

чтобы масштабировани<strong>е</strong> формы сопровождалось масштабировани<strong>е</strong>м анимированных картинок.<br />

О вручную выб<strong>е</strong>рит<strong>е</strong> дюново<strong>е</strong> изображ<strong>е</strong>ни<strong>е</strong> формы<br />

В окн<strong>е</strong> Properties выб<strong>е</strong>рит<strong>е</strong> для фонового изображ<strong>е</strong>ния улья вариант (п о п <strong>е</strong> ). Зат<strong>е</strong>м в конструктор<strong>е</strong><br />

загрузит<strong>е</strong> вм<strong>е</strong>сто н<strong>е</strong>го отмасштабированно<strong>е</strong> изображ<strong>е</strong>ни<strong>е</strong>.<br />

p u b l i c p a r t i a l c l a s s H iv e F o r m : F o rm { Свойство ClientRectangle ф ормы включа<strong>е</strong>т<br />

p u b l i c H iv e F o r m О { f^^ctangte, сод<strong>е</strong>ржащ<strong>е</strong><strong>е</strong> инф орм а-<br />

I n i t i a l i z e C o m p o n e n t O ;<br />

00 отображ а<strong>е</strong>мой области<br />

B a c k g r o u n d lm a g e = R e n d e r e r . R e s i z e l m a g e (<br />

P r o p e r t i e s . R e s o u r c e s . H i v e ___i n s i d e _ , \<br />

C l i e n t R e c t a n g l e . W i d t h , C l i e n t R e c t a n g l e . H e i g h t ) ;<br />

j<br />

^<br />

Запустит<strong>е</strong> сим улятор, он работа<strong>е</strong>т нам ного бы стр<strong>е</strong><strong>е</strong>!

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

Saved successfully!

Ooh no, something went wrong!