Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему-то не рисуется битмап (или рисуется не туда) (http://www.flasher.ru/forum/showthread.php?t=110153)

mikleb 28.03.2008 03:31

Почему-то не рисуется битмап (или рисуется не туда)
 
pic1.draw (pic3, new Matrix (1, 0, 0, 1, x, y), null, BlendMode.DARKEN);
pic2.draw (pic1, null, null, BlendMode.NORMAL, new Rectangle (x, y, w, h), false);


размер pic1 500х500 а pic3 и pic2 100x100
w=100
h=100
0<=x,y<500

Если x и y < 100, то в pic2 рисуется кусок из pic1 если же x>100 или y>100 - то почему то не рисуется. Почему такое может быть?

wvxvw 28.03.2008 10:14

Попробуйте взять тетрадный листочек, и написать что-нибудь рядом на столе - эффект будет такой же - пустой лист =)

mikleb 28.03.2008 14:14

Вообщем у меня есть много вопросов связанные с draw.
1)Matrix - это матрица замены координат в какой системе? у битмапа на котором рисуем или у битмапа который рисуем или еще что. Еще колор трасформэйшон это применяется к результату или к битмапу на котором рисуем , а потом уже происходит наложение. В хелпе про это совсем не ясно написано.
И самое главное как через draw на маленьком битмапе нарисовать кусок из большого битмапа.

wvxvw 28.03.2008 14:52

pic1.draw (pic3, new Matrix (1, 0, 0, 1, x, y), null, BlendMode.DARKEN);
Вот тут матрица применяется к клипу до того как его воткнуть в битмап. Т.е. если то же самое записать словами: Взять клип, высоту и ширину не менять, переместить на х вправо и на у вниз относительно х0у0 битмапа, после чего обрезать результат по краям исходного битмапа. Т.е. получилось, что вы взяли клип, но трансформировали его так, что у него не оказалось общих точек с битмапом, в который собирались его рисовать.

mikleb 28.03.2008 16:07

To wvxvw
На pic1 все рисуется куда надо. А вот в pic2 почему то нужный кусок pic1 не рисуется

wvxvw 28.03.2008 16:43

Вложений: 1
Вложение 19177
Синий - незаполненные области pic1, темнозеленый - область занимаемая pic2. Т.е. что у вас получилось: Вы взяли картинку и воткнули ее в битмапдату со сдвигом по 100 пикселов вниз и вправо. Соответсвенно, когда попытались наложить - картинка оказалась вне области pic2.
Проще - скажите чего нужно сделать - попробую сделать пример, а то так до посинения объяснять можно =)

mikleb 28.03.2008 21:57

To wvxvw
Но ведь в pic2 в месте куда пишется матрица написано null значит должно рисоваться со сдвигом 0. А кусок из pic1 который нужно нарисовать в pic2 задает Rectangle (x, y, w, h) т.е. как раз то место в pic1 где нарисован pic3

wvxvw 28.03.2008 23:38

Ну так оно и рисуется со сдвигом 0, только там прозрачные пиксели... заполненые пиксели начинаются за пределами pic2...
Проще - скажите чего нужно сделать - попробую сделать пример, а то так до посинения объяснять можно =)

mikleb 29.03.2008 01:08

To wvxvw
Мне не нужно чего то сделать, а нужно понять почему не рисует (т.е что именно делает draw).
То есть draw рисует весь сорс битмап и пропускает нарисовку пикселей вне клипректа. Но почему тогда следущий код тоже не рисует:
pic1.draw (pic3, new Matrix (1, 0, 0, 1, x, y), null, BlendMode.DARKEN);
pic2.draw (pic1,new Matrix(1,0,0,1,-x,-y), null, BlendMode.NORMAL, new Rectangle (x, y, w, h), false);

badun 29.03.2008 01:58

Если не нужно чего-то сделать, а нужно понять, тем более приведи полный исходник, тогда помогут. Потому что объяснить, как выяснилось, ты нормально не можешь.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.