Форум 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=160684)

Jewelz 16.07.2011 15:26

вы уверены, что до этого этапа не получится скруглить углы? например, до того как рисовать квадраты на битмапе

если нужно все-таки сделать на этом этапе, то я предлагаю сделать поиск углов (4 вида) и заменить их на заранее подготовленный скругленный вариант

наверное можно как-то математически решить задачу, но в математике я не на столько силен =)

saikspaik 16.07.2011 15:32

По моему, это все танцы с бубнами. Blur + threshold = как раз то, что ты хочешь.
И делается быстро.

sarjick 16.07.2011 16:51

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

-De- 16.07.2011 16:55

Любое 2-х цветное изображение состоит из фона и прямоугольных же пикселов изображения)
Так что врядли задача решается в общем виде. Можно ли считать, что расстояние между углами всегда не меньше радиуса скругления? Тогда находим все прямоугольники, рисуем их drawRoundRect - профит. Blur, возможно, не подойдёт, если вогнутые углы не надо скруглять (как на рис.).
Как искать прямоугольники?
Находим угловой пиксел, который не состоит в других прямоугольниках. Двигаемся вправо (или влево, куда можно), пока не упрёмся. Потом двигаемся вверх (или вниз), пока все пикселы получившегося прямоугольника не цвета фона. Повторять пока не останется угловых пикселов.

Jewelz 16.07.2011 17:07

> Потом двигаемся вверх (или вниз), пока все пикселы получившегося прямоугольника не цвета фона.

так неверно найдутся пересеченные прямоугольники

saikspaik 16.07.2011 17:36

Цитата:

Сообщение от -De- (Сообщение 1012096)
Blur, возможно, не подойдёт, если вогнутые углы не надо скруглять (как на рис.).

Нужно у ОПа уточнить.

sarjick
Тебе только выпуклые углы закруглять, или все?

-De- 16.07.2011 18:11

Jewelz, хватит покрыть всё, что есть прямоугольниками. То, что они будут накладываться - не так страшно.

Zebestov 16.07.2011 18:54

Точка цвета_прямоугольника является выпуклым углом, если вокруг нее ровно три точки цвета_прямоугольника. Не проще ли отыскать такие углы и скруглить?

Wolsh 16.07.2011 19:37

Цитата:

как бы мне определять, что на битмапе находится, прямоугольник с определенной длиной и высотой и с левым верхним углом в определенной координате?
getColorBoundsRect()

S-ed 17.07.2011 03:56

Вообще это делается проще.
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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.