![]() |
Почему-то не рисуется битмап (или рисуется не туда)
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 - то почему то не рисуется. Почему такое может быть? |
Попробуйте взять тетрадный листочек, и написать что-нибудь рядом на столе - эффект будет такой же - пустой лист =)
|
Вообщем у меня есть много вопросов связанные с draw.
1)Matrix - это матрица замены координат в какой системе? у битмапа на котором рисуем или у битмапа который рисуем или еще что. Еще колор трасформэйшон это применяется к результату или к битмапу на котором рисуем , а потом уже происходит наложение. В хелпе про это совсем не ясно написано. И самое главное как через draw на маленьком битмапе нарисовать кусок из большого битмапа. |
pic1.draw (pic3, new Matrix (1, 0, 0, 1, x, y), null, BlendMode.DARKEN);
Вот тут матрица применяется к клипу до того как его воткнуть в битмап. Т.е. если то же самое записать словами: Взять клип, высоту и ширину не менять, переместить на х вправо и на у вниз относительно х0у0 битмапа, после чего обрезать результат по краям исходного битмапа. Т.е. получилось, что вы взяли клип, но трансформировали его так, что у него не оказалось общих точек с битмапом, в который собирались его рисовать. |
To wvxvw
На pic1 все рисуется куда надо. А вот в pic2 почему то нужный кусок pic1 не рисуется |
Вложений: 1
Вложение 19177
Синий - незаполненные области pic1, темнозеленый - область занимаемая pic2. Т.е. что у вас получилось: Вы взяли картинку и воткнули ее в битмапдату со сдвигом по 100 пикселов вниз и вправо. Соответсвенно, когда попытались наложить - картинка оказалась вне области pic2. Проще - скажите чего нужно сделать - попробую сделать пример, а то так до посинения объяснять можно =) |
To wvxvw
Но ведь в pic2 в месте куда пишется матрица написано null значит должно рисоваться со сдвигом 0. А кусок из pic1 который нужно нарисовать в pic2 задает Rectangle (x, y, w, h) т.е. как раз то место в pic1 где нарисован pic3 |
Ну так оно и рисуется со сдвигом 0, только там прозрачные пиксели... заполненые пиксели начинаются за пределами pic2...
Проще - скажите чего нужно сделать - попробую сделать пример, а то так до посинения объяснять можно =) |
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); |
Если не нужно чего-то сделать, а нужно понять, тем более приведи полный исходник, тогда помогут. Потому что объяснить, как выяснилось, ты нормально не можешь.
|
| Часовой пояс GMT +4, время: 13:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.