Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Обрезка изображения   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.022 c
15-1232271058
visiter
2009-01-18 12:30
2009.03.29
англоязычные форумы dephi


15-1231675452
Shira
2009-01-11 15:04
2009.03.29
Кто возмется сделать диаграммер типа Visio?


11-1197964128
=BuckLr=
2007-12-18 10:48
2009.03.29
Проблема ListView на TabControl


2-1233909755
kyn66
2009-02-06 11:42
2009.03.29
Не правильно работает MonthsBetween


15-1232945293
Slider007
2009-01-26 07:48
2009.03.29
С днем рождения ! 25 января 2009 воскресенье