![]() |
|
![]() ![]() ![]() |
|
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
подскажите как можно проще всего зумировать (+-) изображение, нарисованное на канве
компонента (желательно выбранную его часть, а не весь рисунок...) |
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
В свое время решал данную задачу средствами SSE и Windows GDI. Сейчас, думаю что эффективнее будет использовать DirectX средства, так как это значительно повысит скорость вывода уже апроксимированного изображения на экран. Алгоритмы, технологии задействованные достаточно объемные, чтобы отнести их к категории "можно проще". Неужели до сих пор нет готовых компонентов для решения данной задачи?
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Если по самому простому, то можно так:
Canvas.StretchDraw(ClientRect, aBmp); Где ClientRect - размер прямоугольника, в которое будем выводить изображение aBmp - изображение Canvas - место, на котором будем рисовать -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Artemon: a что задавать в параметре aBmp, если изображение рисуется на канве (например image-a)....хотелось бы получить пример вызова данной функции.....эта функция масшатабирует изображение? (в обе ли стороны и с каким коэффициентом?)
|
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
И что, если пользователь немножко передвинет область просмотра изображения при заданном коэффициенте увеличения, будете заново всю область масштабировать? Даже используя алгоритм ближайшего пиксела (StretchDraw), тормоза получите волшебные
![]() |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
так как же все-таки быть?
|
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
http://blogs.meetandplay.com/WPierce/archi..._Component.aspx
http://www.imagecomponents.com/ Если даже среди перечисленного нет VCL компонента, удовлетворяющего вашим потребностям. Разработка VCL враппера для любого из существующих по времени в 100 раз быстрее нежели написание собственного. |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Здесь есть примеры использования StrechDraw: http://citforum.amursu.ru/programming/32less/les14.shtml
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
vaddsm |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Зачем? Каким вы видете алгоритм основанный на StrechDraw? ) В приведенной вами ссылке статья весьма сомнительного содержания:
Вызывать всякий раз StretchDraw при обработке WM_PAINT, в крайней степени не рационально. Подобные вычисления надо делать заранее и кэшировать, а при отрисовке только выводить уже обработанное изображение. Это сообщение отредактировал(а) vaddsm - 29.5.2009, 09:05 |
||||
|
|||||
Artemon |
|
||||||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
1. Вы бы лучше свои ссылки еще раз пересмотрели, по одной из них компоненты к .Net во второй вообще мало чего полезного. 2. Я эту ссылку привел для того, чтобы можно было посмотреть пример использования StrechDraw. Если вы прочтете все посты еще раз, то увидете такой вопрос:
Так что ваш бредовый комментарий вообще ни к месту. Это сообщение отредактировал(а) Artemon - 29.5.2009, 11:27 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
||||||
|
|||||||
vaddsm |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
ОК, давайте начнем с первой 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.
Так, все же, зачем данный пример в рамках обсуждаемой темы, вы считаете, что с помошью этой функции можно качественно реализовать поставленную задачу? Если нет, то зачем об этом вообще говорить. Это сообщение отредактировал(а) vaddsm - 29.5.2009, 14:53 |
||||
|
|||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
это все конечно замечательно, но мне нужно масштабировать (в обе стороны) рисунок, нарисованный на канве image-a, а не загруженный в него из файла графический объект...
(2-ой параметр Image1.Picture.BitMap - ???) |
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Для начала было бы не плохо рисовать на канве того-же TBitmap. Затем использовать его Handle, чтобы выводить его где угодно. В вашем случае это возможно? Кто и что рисует на канве image-a, если это не заранее подготовленный растр, то заданный масштаб можно использовать при создании этого рисунка. |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
To gordmiand,
Брось на форму 2 TImage. Если ты задаешь больший прямоугольник - изображение растягивается, если меньший - сжимается. To vaddsm, 1. Все, что ты привел - платное. (Думаю это уже достаточная причина, чтобы даже не смотреть сюда). 2. Все без исходников (на этом пункте уже нет сомнения - что библиотеки использовать нет никакого желания). 3. Качественно говоришь реализовать задачу, да если кто-то и захочет качественно реализовать задачу, тот будет к примеру использовать библиотеку OpenCV, но не как ни эти ActiveX компоненты. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Ok, если вариант Artemon, вас gordmiand устраивает, продолжать спор бессмысленно. Если же вас интересует качественный и быстрый способ просмотра изображения при заданном масштабе, стоит грамотно оценить возможные трудозатраты перед тем как отбрасывать платные компоненты.
|
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Artemon: что-то я не совем понял логику масштабирования с использованием 2(!!!) TImage-ей...как они должны располагаться на форме друг относительно друга? при изменении размеров прямоугольника вывода в StretchDraw выводится вообще не пойми какой эллипс...а то и его две части на каждом из имаджей...
|
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
люди......... ну подскажите, очень надо...............
|
|||
|
||||
vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Ждемс когда Artemon раскроет свой замысел. Лично я представлял себе задачу так: Есть битмап источник, необходимо описать окно способное осуществлять просмотр областей этого изображения при заданном увеличении. Но раз речь идет об игушечно-плюшевых TImage, Canvas, StretchDraw. Средствами которых задача в сформулированном мною формате не разрешима, я склонен делать выводы что не верно ее трактовал.
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Да я уже все рассказал, и показал, если автор топика не может использовать несколько строк кода, которые я привел, то к сожалению здесь я ничем помочь не могу.
Да и вообще пользоваться поиском надо, вот например: 1. http://forum.vingrad.ru/forum/topic-141499.html 2. http://www.google.com/search?hl=ru&cli...&lr=lang_ru Это сообщение отредактировал(а) Artemon - 2.6.2009, 10:50 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |