![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Святогор |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
Суть в чём: к примеру, есть белая канва 640х480, пользователь что-нибудь рисует на ней и потом сохраняет в файл. Перед сохранением нужно обрезать канву так, чтобы в файл попали только художества пользователя, а не половина чистого листа канвы.
В векторных рисовалках это называется вроде как Visible bounds. |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
когда пользователь нажимает левую кнопку мыши и когда водит по канве (с нажатой кнопкой), запоминаешь текущую координату и сравниваешь её с минимальной. Если она меньше, то минимальной становится текущая. И так для максимальной по Х и минимальной и максимальной по Y. Вот тебе и границы
|
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
При сохранении ищи крайние не белые пиксели слева, справа, снизу и сверху, найдешь прямоугольник по которому можно обрезать. Скопируй канвас на буферный битмап (если он еще не на нем, в чем я сомневаюсь), для быстрого доступа к пикселям воспользуйся scanline().
как пример могу показать эту функцию, довольно неоптимальная местами и без некоторых проверок (пример ищет пиксели которые не "темнее" 4%, тебе надо искать пиксели которые по всем каналам (RGB) не равны 255), передаются в нее битмап с нарисованным и trect который вернет прямоугольник:
|
|||
|
||||
Святогор |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.8.2006 Репутация: нет Всего: нет |
Спасибо, ребята!
|
|||
|
||||
Mikel |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
не забудь предусмотреть ситуацию когда пользователь ничего не нарисовал
![]() -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |