Поиск:

Ответ в темуСоздание новой темы Создание опроса
> масштабирование изображения 
:(
    Опции темы
gordmiand
Дата 27.5.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



подскажите как можно проще всего зумировать (+-) изображение, нарисованное на канве
компонента (желательно выбранную его часть, а не весь рисунок...)
PM MAIL   Вверх
vaddsm
Дата 28.5.2009, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



В свое время решал данную задачу средствами SSE и Windows GDI. Сейчас, думаю что эффективнее будет использовать DirectX средства, так как это значительно повысит скорость вывода уже апроксимированного изображения на экран. Алгоритмы, технологии задействованные достаточно объемные, чтобы отнести их к категории "можно проще". Неужели до сих пор нет готовых компонентов для решения данной задачи? 
PM MAIL   Вверх
Artemon
Дата 28.5.2009, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Если по самому простому, то можно так: 

Canvas.StretchDraw(ClientRect, aBmp);

Где ClientRect - размер прямоугольника, в которое будем выводить изображение
aBmp - изображение
Canvas - место, на котором будем рисовать


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
gordmiand
Дата 28.5.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Artemon: a что задавать в параметре aBmp, если изображение рисуется на канве (например image-a)....хотелось бы получить пример вызова данной функции.....эта функция масшатабирует изображение? (в обе ли стороны и с каким коэффициентом?)
PM MAIL   Вверх
vaddsm
Дата 28.5.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



И что, если пользователь немножко передвинет область просмотра изображения при заданном коэффициенте увеличения, будете заново всю область масштабировать? Даже используя алгоритм ближайшего пиксела (StretchDraw), тормоза получите волшебные  smile.  
PM MAIL   Вверх
gordmiand
  Дата 28.5.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



так как же все-таки быть?
PM MAIL   Вверх
vaddsm
Дата 29.5.2009, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



http://blogs.meetandplay.com/WPierce/archi..._Component.aspx
http://www.imagecomponents.com/

Если даже среди перечисленного нет VCL компонента, удовлетворяющего вашим потребностям. Разработка VCL враппера для любого из существующих по времени в 100 раз быстрее нежели написание собственного. 
PM MAIL   Вверх
Artemon
Дата 29.5.2009, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Здесь есть примеры использования StrechDraw: http://citforum.amursu.ru/programming/32less/les14.shtml




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
vaddsm
Дата 29.5.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



Цитата

Здесь есть примеры использования StrechDraw


Зачем? Каким вы видете алгоритм основанный на StrechDraw? )

В приведенной вами ссылке статья весьма сомнительного содержания:

Код

procedure TForm1.FormPaint(Sender: TObject);
begin
   with Canvas do begin
     Draw(0,0, Image1.Picture.BitMap);
     StretchDraw(Rect(250,0,350,50),Image1.Picture.BitMap)
   end;
end;


Вызывать всякий раз StretchDraw при обработке WM_PAINT, в крайней степени не рационально. Подобные вычисления надо делать заранее и кэшировать, а при отрисовке только выводить уже обработанное изображение. 

Это сообщение отредактировал(а) vaddsm - 29.5.2009, 09:05
PM MAIL   Вверх
Artemon
Дата 29.5.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Цитата

Зачем? Каким вы видете алгоритм основанный на StrechDraw? )
В приведенной вами ссылке статья весьма сомнительного содержания:


Цитата

Вызывать всякий раз StretchDraw при обработке WM_PAINT, в крайней степени не рационально. Подобные вычисления надо делать заранее и кэшировать, а при отрисовке только выводить уже обработанное изображение. 


1. Вы бы лучше свои ссылки еще раз пересмотрели, по одной из них компоненты к .Net во второй вообще мало чего полезного.

2. Я эту ссылку привел для того, чтобы можно было посмотреть пример использования StrechDraw.

Если вы прочтете все посты еще раз, то увидете такой вопрос:
Цитата

Artemon: a что задавать в параметре aBmp, если изображение рисуется на канве (например image-a)....хотелось бы получить пример вызова данной функции.....


Так что ваш бредовый комментарий вообще ни к месту.

Это сообщение отредактировал(а) Artemon - 29.5.2009, 11:27


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
vaddsm
Дата 29.5.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



Цитата

1. Вы бы лучше свои ссылки еще раз пересмотрели, по одной из них компоненты к .Net во второй вообще мало чего полезного.


ОК, давайте начнем с первой 

http://www.leadtools.com/Home2/general/act...om-vcl-info.htm - ActiveX, VCL and COM
http://www.gdpicture.com/products/activex/...imaging-sdk.php - ActiveX компонент (не .Net)
http://www.vimas.com/ve_sdk_whats_new.htm - .. и COM в том числе.

Более того, любой из приведенных компонентов реализованных в .Net довольно просто обернуть в ActiveX control. 

Цитата

2. Я эту ссылку привел для того, чтобы можно было посмотреть пример использования StrechDraw.


Так, все же, зачем данный пример в рамках обсуждаемой темы, вы считаете, что с помошью этой функции можно качественно реализовать поставленную задачу?  Если нет, то зачем об этом вообще говорить. 

Это сообщение отредактировал(а) vaddsm - 29.5.2009, 14:53
PM MAIL   Вверх
gordmiand
Дата 29.5.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



это все конечно замечательно, но мне нужно масштабировать (в обе стороны) рисунок, нарисованный на канве image-a, а не загруженный в него из файла графический объект...
(2-ой параметр Image1.Picture.BitMap - ???)
PM MAIL   Вверх
vaddsm
Дата 29.5.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



Цитата

рисунок, нарисованный на канве image-a


Для начала было бы не плохо рисовать на канве того-же TBitmap. Затем использовать его Handle,  чтобы выводить его где угодно. В вашем случае это возможно? Кто и что рисует на канве image-a, если это не заранее подготовленный растр, то заданный масштаб можно использовать при создании этого рисунка. 
PM MAIL   Вверх
Artemon
Дата 29.5.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



To gordmiand,

Код

Image1->Canvas->Ellipse(0,0,100,100);

//Image2->Canvas->StretchDraw(Rect(0,0,50,50),Image1->Picture->Bitmap);

Image2->Canvas->StretchDraw(Rect(0,0,200,200),Image1->Picture->Bitmap);


Брось на форму 2 TImage.
Если ты задаешь больший прямоугольник - изображение растягивается, если меньший - сжимается.

To vaddsm,

1. Все, что ты привел - платное. (Думаю это уже достаточная причина, чтобы даже не смотреть сюда).
2. Все без исходников (на этом пункте уже нет сомнения - что библиотеки использовать нет никакого желания).
3. Качественно говоришь реализовать задачу, да если кто-то и захочет качественно реализовать задачу, тот будет к примеру использовать библиотеку OpenCV, но не как ни эти ActiveX компоненты.



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
vaddsm
Дата 29.5.2009, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 30.6.2007

Репутация: нет
Всего: нет



Ok, если вариант Artemon, вас gordmiand устраивает, продолжать спор бессмысленно. Если же вас интересует качественный и быстрый способ просмотра изображения при заданном масштабе, стоит грамотно оценить возможные трудозатраты перед тем как отбрасывать платные компоненты.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1265 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.