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><br />

Объ<strong>е</strong>кт Graphics<br />

Посмотрим на добавл<strong>е</strong>нный к визуализатору м<strong>е</strong>тод R e s i z e l m a g e {). Он<br />

начина<strong>е</strong>т с создания объ<strong>е</strong>кта B i t m a p тр<strong>е</strong>бу<strong>е</strong>мого разм<strong>е</strong>ра. Зат<strong>е</strong>м при<br />

мощи м<strong>е</strong>тода G r a p h i c s . F r o m l m a g e О созда<strong>е</strong>тся о б ъ <strong>е</strong> к т G r a p h i c s и<br />

использу<strong>е</strong>тся м<strong>е</strong>тод D r a w l m a g e () этого объ<strong>е</strong>кта для отображ<strong>е</strong>ния картинки<br />

на объ<strong>е</strong>кт<strong>е</strong> Bitmap. О братит<strong>е</strong> внимани<strong>е</strong>, каким образом м<strong>е</strong>тоду<br />

D r a w l m a g e {) п<strong>е</strong>р<strong>е</strong>даются парам<strong>е</strong>тры w i d t h и height. Им<strong>е</strong>нно в этот мом<strong>е</strong>нт<br />

осущ<strong>е</strong>ствля<strong>е</strong>тся масштабировани<strong>е</strong>. Након<strong>е</strong>ц вам возвраща<strong>е</strong>тся только<br />

что созданный объ<strong>е</strong>кт Bitmap, который можно использовать в кач<strong>е</strong>ств<strong>е</strong><br />

фонового изображ<strong>е</strong>ния улья или анимированного рисунка пч<strong>е</strong>лы.<br />

ф ормы и эл<strong>е</strong>м<strong>е</strong>нт ы<br />

управл<strong>е</strong>ния снабж<strong>е</strong>ны м <strong>е</strong> ­<br />

т одом CreateGraphicsQj<br />

который возвращ а<strong>е</strong>т<br />

^<br />

Впроч<strong>е</strong>м,<br />

пю ои<strong>е</strong>м ^<br />

скоро<br />

с^ро Ы вс<strong>е</strong><br />

увидит <strong>е</strong> собств<strong>е</strong>нными<br />

глазами.<br />

/<br />

Вы п<strong>е</strong>р<strong>е</strong>да<strong>е</strong>т<strong>е</strong> м <strong>е</strong>т о­<br />

ду изображ<strong>е</strong>ни<strong>е</strong> с данными<br />

о том. какую<br />

ширину и высоту оно<br />

должно им<strong>е</strong>ть.<br />

public static Bitmap Resizelmage(Bitmap picture, int width, int height) {<br />

}<br />

Bitmap resizedPicture = new Bitmap(width, height);<br />

using (Graphics graphics = Graphics,Fromlmage(resizedPicture)) {<br />

graphics.Drawlmage(picture, 0, 0, width, height);<br />

} ^ ш т о д FromlmageO возвраш,а<strong>е</strong>т новый обш кт drapkics,^<br />

V _ позволяющий вст авлят ь графич<strong>е</strong>ски<strong>е</strong> f<br />

return resizedPicture; браж<strong>е</strong>ни<strong>е</strong>. Воспользуйт<strong>е</strong>сь функци<strong>е</strong>й IntelliSense аля у<br />

ч<strong>е</strong>ния м <strong>е</strong>т одов, принадл<strong>е</strong>жащих классу Graphics. Н априм<br />

<strong>е</strong>р, м <strong>е</strong>т од Praw lm ageQ копиру<strong>е</strong>т<br />

resizedPicture с координатой (О. О) и<br />

f<br />

соот в<strong>е</strong>т ст вии с заданными парам <strong>е</strong>т рам и w id th и height.<br />

Масштабировани<strong>е</strong> изоб|>а)к<strong>е</strong>ния<br />

П<strong>е</strong>р<strong>е</strong>тащ ит<strong>е</strong> кнопку на форму F i e l d и добавьт<strong>е</strong> к н<strong>е</strong>й этот код,<br />

создающий эл<strong>е</strong>м<strong>е</strong>нт P i c t u r e B o x разм<strong>е</strong>ром 100 хЮО пикс<strong>е</strong>лов<br />

с ч<strong>е</strong>рной лини<strong>е</strong>й по краю, что позволя<strong>е</strong>т оц<strong>е</strong>нить <strong>е</strong>го разм<strong>е</strong>р.<br />

Зат<strong>е</strong>м м<strong>е</strong>тод R e s i z e l m a g e {) масштабиру<strong>е</strong>т картинку пч<strong>е</strong>лы до<br />

80 X 40 пикс<strong>е</strong>лов и назнача<strong>е</strong>т свойству Image. Посл<strong>е</strong> добавл<strong>е</strong>ния<br />

к форм<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нта P i c t u r e B o x появля<strong>е</strong>тся пч<strong>е</strong>ла,<br />

p r i v a t e v o i d b u t t o n l _ C l i c k ( o b j e c t s e n d e r , E v e n t A r g s e)<br />

{<br />

}<br />

P i c t u r e B o x b e e P i c t u r e = n e w P i c t u r e B o x 0 ;<br />

b e e P i c t u r e . L o c a t i o n = n e w P o i n t d O , 1 0 ) ;<br />

b e e P i c t u r e . S iz e = n e w S iz e d O O , 1 0 0 ) ;<br />

b e e P i c t u r e . B o r d e r S t y l e = B o r d e r S t y l e . F i x e d S i n g l e ;<br />

b e e P i c t u r e . I m 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 . B e e _ a n i m a t i o n _ l , 8 0 , 4 0 ) ;<br />

C o n t r o l s . A d d ( b e e P i c t u r e ) ;<br />

Вы наблюда<strong>е</strong>т<strong>е</strong> проц<strong>е</strong>сс масштабирования<br />

изображ<strong>е</strong>ния—сжатая карт инка'^<br />

намного м<strong>е</strong>ньш<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нта PictureBox.<br />

И м<strong>е</strong>тод ResizelmageQ ум<strong>е</strong>ньшит р а з­<br />

м<strong>е</strong>р эл<strong>е</strong>м<strong>е</strong>нта.<br />

602 глава 13<br />

^ТЬ<strong>е</strong>й<strong>е</strong>и<br />

^<br />

Это прим<strong>е</strong>р. Закончив <strong>е</strong>го,<br />

удалит<strong>е</strong> кнопку и код.<br />

М<strong>е</strong>тод Resizelmage ( )<br />

созда<strong>е</strong>т объ<strong>е</strong>кт<br />

Graphics, рисующий<br />

на н<strong>е</strong>видимом<br />

объ<strong>е</strong>кт<strong>е</strong> Bitmap. Он<br />

возвраща<strong>е</strong>т о^<strong>е</strong>кт<br />

Bitmap, который<br />

и отобража<strong>е</strong>тся на<br />

форм<strong>е</strong> или эл<strong>е</strong>м<strong>е</strong>нт<strong>е</strong><br />

KctureBox.

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

Saved successfully!

Ooh no, something went wrong!