![]() |
вы уверены, что до этого этапа не получится скруглить углы? например, до того как рисовать квадраты на битмапе
если нужно все-таки сделать на этом этапе, то я предлагаю сделать поиск углов (4 вида) и заменить их на заранее подготовленный скругленный вариант наверное можно как-то математически решить задачу, но в математике я не на столько силен =) |
По моему, это все танцы с бубнами. Blur + threshold = как раз то, что ты хочешь.
И делается быстро. |
До этого не получится, на входе только готовый битмап с прямоугольниками .. ( Поиск прямых углов - так и есть, нужен ...
|
Любое 2-х цветное изображение состоит из фона и прямоугольных же пикселов изображения)
Так что врядли задача решается в общем виде. Можно ли считать, что расстояние между углами всегда не меньше радиуса скругления? Тогда находим все прямоугольники, рисуем их drawRoundRect - профит. Blur, возможно, не подойдёт, если вогнутые углы не надо скруглять (как на рис.). Как искать прямоугольники? Находим угловой пиксел, который не состоит в других прямоугольниках. Двигаемся вправо (или влево, куда можно), пока не упрёмся. Потом двигаемся вверх (или вниз), пока все пикселы получившегося прямоугольника не цвета фона. Повторять пока не останется угловых пикселов. |
> Потом двигаемся вверх (или вниз), пока все пикселы получившегося прямоугольника не цвета фона.
так неверно найдутся пересеченные прямоугольники |
Цитата:
sarjick Тебе только выпуклые углы закруглять, или все? |
Jewelz, хватит покрыть всё, что есть прямоугольниками. То, что они будут накладываться - не так страшно.
|
Точка цвета_прямоугольника является выпуклым углом, если вокруг нее ровно три точки цвета_прямоугольника. Не проще ли отыскать такие углы и скруглить?
|
Цитата:
|
Вообще это делается проще.
1) Исходная картинка 2) Картинка со скруглениями всех углов 3) Применение к 2) маски полученной из 1) (для чб картинки - субстракт инверсии, по сути - удаление всех пикселей белого цвета первой картинки из пикселей второй картинки) |
| Часовой пояс GMT +4, время: 08:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.