Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизОбрезка изображения Найти похожие ветки
← →
XeON © (2009-01-28 14:34) [0]Доброго времени суток. Давно пытаюсь смастерить нечто подобное одной из стандартных функций 99% графических редакторов (paint, photoshop, gimp, picasa и пр.). Нужно собственно вот что:
1. Подгрузить на форума картинку
2. на картинке нарисовать квадратик (прямоугольник)
3. Возможность динамически (мышью) изменять размеры этого самого квадратика
4. После нажатия на кнопку "обрезка" - обрезать всё, что выходило за границы этого квадратика! (типа "раскадровка" в фотошопе)
Собственно основной вопрос в том, как лучше реализовать данный квадратик? В какую сторону копать? Ещё хотелось бы сделать затемнение той области, которая будет отрезана.
← →
{RASkov} © (2009-01-28 15:28) [1]Что бы не закрыли твою ветку, лучше расскажи что делал, и что не получается.... конкретный момент, а не задачу в целом....
ЗЫЖ Впрочем если и закроют, то будут правы.
← →
Anatoly Podgoretsky © (2009-01-28 15:42) [2]> XeON (28.01.2009 14:34:00) [0]
> Ещё хотелось бы сделать затемнение той области, которая будет отрезана.
Микрософту на это потребовалось 15 лет
А я предлагаю их переплюнуть, затемнять, то что не отрезается.
Сообственно у тебя не одназначно, насчет "будет отрезана" это внутренняя или внешняя часть.
← →
KSergey © (2009-01-28 15:55) [3]Рамка рисуется путем установки режима XOR на Canvas (один раз - нарисуется, второй по тому же месту - сотрется).
Движения мыши перехватываются, на WM_MOUSEMOVE вешаем перерисовщик рамки в новых координатах (сначала стираем в старых).
Ну и ка кобычно Уверен, в гугле найдется много примерно исходников графических редакторов, с разжевыванием, и даже на дельфи
← →
Denis__ © (2009-01-28 16:00) [4]
> Рамка рисуется путем установки режима XOR
И получается рамка самых невероятных цветов?=)
← →
Anatoly Podgoretsky © (2009-01-28 16:04) [5]> KSergey (28.01.2009 15:55:03) [3]
Там не резиновая рамка и не рамка даже, а более сложная структура и рисуется обычно не XOR
← →
Pavia © (2009-01-28 16:12) [6]Рисовать прямоугольник лучше черех xor.
1) Во-первых стиреть его проще всего через тот же xor.
2) Во-вторых он будет заметен везде и на черном фоне и на белом. Так как будет контрастировать.
После того как рамка создана создаешь маску.
Затемнение делать при помощи смешивания с черным цветом. Разумеется нужно также хранить в оригинали изоброжение.
Для возможности перемещения хранить координаты квадрата.
← →
Anatoly Podgoretsky © (2009-01-28 16:34) [7]> Pavia (28.01.2009 16:12:06) [6]
И на сером?
Затемнение делают с помощи шахматной маcки, тот же XOR
← →
KSergey © (2009-01-28 16:48) [8]> Denis__ © (28.01.09 16:00) [4]
> И получается рамка самых невероятных цветов?=)
> Anatoly Podgoretsky © (28.01.09 16:04) [5]
> а более сложная структура и рисуется обычно не XOR
Ребята, ну вы б рассказали при помощи какой "сложной структуры" это все рисуется, раз такие умные :) Я хоть знать буду.
Автору б ХОR для начала осилить, думаю.
← →
KSergey © (2009-01-28 16:50) [9]> Denis__ © (28.01.09 16:00) [4]
> И получается рамка самых невероятных цветов?=)
В принципе из жизни могу утверждать, что это выглядит вполне очень хорошо. Кроме сплошного серого цвета :)
← →
Denis__ © (2009-01-28 16:56) [10]
> KSergey © (28.01.09 16:50) [9]
> > Denis__ © (28.01.09 16:00) [4] > И получается рамка
> самых невероятных цветов?=)В принципе из жизни могу утверждать,
> что это выглядит вполне очень хорошо. Кроме сплошного серого
> цвета :)
А если сплашной все ж таки? Тогда что делать?))
← →
Anatoly Podgoretsky © (2009-01-28 16:57) [11]> KSergey (28.01.2009 16:48:08) [8]
Если ты видел, то это рамка с 8 маркерами и не переключаемая, а непрерывного цвета, а в диспетчере рисунков еще дальше пошли, ушли от рамки совсем оставили только маркеры и сделали затемнение, мне не очень удобно, но зато сделали возможно ввести точные значения в окошечки и не надо вылавливать мышкой пиксели.
← →
Anatoly Podgoretsky © (2009-01-28 16:58) [12]> KSergey (28.01.2009 16:50:09) [9]
Выглядит обычно нормально, часто так делают из-за простоты реализации, ничего сохранять не надо. Вот серый цвет всю малину портит.
← →
Anatoly Podgoretsky © (2009-01-28 17:04) [13]> Anatoly Podgoretsky (28.01.2009 16:58:12) [12]
Кстати из-за проблемы с серым и сделали затемнение.
← →
test (2009-01-28 17:14) [14]CopyRect смотри справку и примеры работы именно то что нужно.
← →
XeON © (2009-01-28 18:43) [15]Щас расскажу что делал. Нашёл какой-то компонент, типа Panel кажись... Накинул таких компонентов 4 штуки, сделал у них толщину по то ли по 1, то ли по 2 пикселя (винчестер сгорел, так-что сейчас затрудняюсь ответить), потом по аналогии прикрутил к углам этой рамки маркеры, из таких же компонентов, только чёрного цвета... А дальше был алгоритм, смысл которого думаю рассказывать не стоит, т.к. слишком долго! Потом дело было так:
в зависимости от размеров формы динамически менялся размер TImage, после чего вычислялось, во сколько раз на изображении картинка уменьшена... После чего определялась позиция рамки, и пусть с небольшой погрешностью, но всё-таки картинка обрезалась! Вроде правильно объяснил? :)
Потом я понял, что данный метод "не айс", да и к тому же исходники уже ушли в небытие, а ноутбук в мусорку. И я решил спросить у уважаемых мастеров, способ получше моего! Что собственно и сделал.
← →
БарЛог © (2009-01-28 18:53) [16]> винчестер сгорел
> ноутбук в мусорку
сгорел сарай - гори и хата? (с)
← →
Pavia © (2009-01-28 19:29) [17]
> XeON © (28.01.09 18:43) [15]
Все ручками, компоненты лучше не пользоваться, Только PaintBox для вывода.
← →
ketmar © (2009-01-28 19:35) [18]>[15] XeON © (2009-01-28 18:43:00)
>я решил спросить у уважаемых мастеров, способ получше моего!
graphics32, samples.
---
Do what thou wilt shall be the whole of the Law.
← →
XeON © (2009-01-28 19:47) [19]Я компоненты и не хочу пользовать, хочу всё сам сделать! Единственное, что хочу сделать не сам, так это TImage готовый взять, что бы в него грузить картинку. Вопрос только в том, как это правильно реализовать? В принципе, подойдет любая среда + язык. Delphi, C++, Basic, C#.
Пошел читать xor...
← →
antonn © (2009-01-28 19:57) [20]Рамку лучше рисовать свою, без всяких xor, это должна быть рамка, а не разноцветное художество. Для чего нужна фича "ее можно стереть" не понятно.
Сейчас гляну, где то был пример вроде...
← →
XeON © (2009-01-28 19:58) [21]Уважаемый antonn, подскажите, а как её нужно рисовать? Я в этом деле вообще не дундук.
← →
antonn © (2009-01-28 20:00) [22]собственно, если предполагается рисовать рамку "одним взмахом" то пригодится этот пример - http://desksoft.ru/index.php?forum=13&th=113
если нужно рисовать рамку с маркерами, за которые ее можно ресайзить - это посложнее
← →
XeON © (2009-01-28 20:22) [23]Думаю самое сложно для меня - это её нарисовать. Ресайзить её тоже придется, но это мне кажется будет проще...
← →
antonn © (2009-01-28 20:25) [24]да в чем проблема, два битмапа, в первом твое изображение, второй буферный. На второй копируешь первый, рисуешь на втором рамку (canvas.lineto()) и выводишь второй на окно, и так при каждом "кадре".
← →
XeON © (2009-01-28 20:28) [25]antonn, а как-то там DoubleBuffer поставить мона? или трипл буфер... Помню чё-то такое было!
← →
antonn © (2009-01-28 20:29) [26]не надо его ставить, оно и так по схеме [24] без мерцаний работает
← →
XeON © (2009-01-28 20:45) [27]А это че за ботва такая? Загрузил картинку, пишу:
Image1.Canvas.LineTo(10,100);
, компилируется и вылетает, запускается, потом вылетает с ошибкой!
← →
antonn © (2009-01-28 21:00) [28]не грузи jpeg, только bmp
← →
XeON © (2009-01-28 21:01) [29]А как из JPEG"a в битмап сделать?
P.S. Чёт всё позабывал, блин!
← →
Jeer © (2009-01-28 21:06) [30]
> P.S. Чёт всё позабывал, блин!
Первый блин ?
Так он - комом, как известно.
Учись, студент.
← →
XeON © (2009-01-28 21:13) [31]Этот блин, уже перерастает в "во блин!". И он не первый... И я не студент... :)
Но всё-таки хотелось бы узнать, как переделать ЖПГ в Битмап.
← →
antonn © (2009-01-28 21:17) [32]
> XeON © (28.01.09 21:01) [29]
>
> А как из JPEG"a в битмап сделать?
> P.S. Чёт всё позабывал, блин!
>
http://desksoft.ru/index.php?drkb=400&str_path=0|400&w
← →
XeON © (2009-01-28 22:24) [33]Удалено модератором
← →
ketmar © (2009-01-29 14:08) [34]>[31] XeON © (2009-01-28 21:13:00)
дядя петя, ты идиот?
---
All Your Base Are Belong to Us
← →
Jeer © (2009-01-29 15:20) [35]
> дядя петя, ты идиот?
Да это почти синонимы даже по отдельности.
← →
antonn © (2009-01-29 15:28) [36]
Запрещается:
1. Хамство, оскорбления, переход на личности, угрозы физической расправы или любые действия, противоречащие Конституции РФ или попадающие под действия УК РФ (и провоцирование других участников на эти действия).
← →
ketmar © (2009-01-29 15:41) [37]>[36] antonn © (2009-01-29 15:28:00)
собачко, я топикстартеру сказал волшебное слово. судя по всему, он слово проигнорил и продолжает есть кактус. не идиот ли он после этого?
---
All Your Base Are Belong to Us
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.064 c