![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здраствуйте, у меня возникла проблема, вобщем есть определённое изображение, поверх него рисуется произвольный многоугольник, задача - скопировать участок изображения заключённый в этот многоугольник в временной Tbitmap(ну или в поток, это не столь важно). Думаю над реализацией уже второй день, пока ничего нармального не придумал, просьба указать в какую сторону капать, а ещё лучше посмотреть бы исходник в котором такое реализованно
![]() |
#2
|
|||
|
|||
![]() Возможен такой подход: с помощью специальных алгоритмов найти все точки внутри многоугольника попутно используя найденные координаты для канваса рисунка. То есть ты узнаешь цвет очередного пикселя и заносишь его в какой нить массив например или сразу рисешь на "чистом" bitmap'е
|
#3
|
||||
|
||||
![]() ну это то понятно что надо считывать точки из многоугольника, но вот где взять эти специальные алгоритмы о которых вы говорили?)
Единственный вариант какой я придумал - рисовать только грани многоугольника и чистым чёрным цветом, а потом в цикле проверять по линии получившегося изображения - есть чистый чёрный цвет - начинаем копировать с соблюдением координат последующие пиксели, попадается снова чёрный цвет - прекращяем копировать, да. знаю очень топорно и вообще некрасиво, к тому же грань многоугольника может быть горизонтальной(ну в принципе это не столь важно) |
#4
|
|||
|
|||
![]() Если многоугольник невыкуплый, то не подойдет. Эти алгоритмы есть в инете сто пудов, надо просто поискать. "Проверка точки на принадлежность многоугольнику" - там все кучеряво написано, но думаю, разобраться можно.
|
#5
|
|||
|
|||
![]() Цитата:
|
#6
|
|||
|
|||
![]() В DirectX это решается с помощью буфера шаблона (stencil)
|