Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];

Вниз

Приближение битмапа.   Найти похожие ветки 

 
snake-as ©   (2009-05-31 13:57) [0]

Здравствуте. У меня программа рисует битап на определенной площади канваса. Делаю я это так:
   dRect := Bounds(0, 0, MainForm.Width, MainForm.Height);
   sRect := Bounds(0, 0, MainForm.Width, MainForm.Height);
   Canvas.CopyRect(dRect,pic.Canvas,sRect);
Мне нужно сделать приближение, т.е. чтобы картинка была больше, но и область отображения была также, т.е. увеличить dRect не выйдет. Подскажите, пожалуйста, как можно это осуществить? Извините, если вопрос фигово поставлен, башка просто не варит. Заранее спасибо!


 
Юрий Зотов ©   (2009-05-31 14:14) [1]

Каким образом картинку БОЛЬШЕГО размера можно "впихнуть" в ТУ ЖЕ область отображения? Только при уменьшении ее масштаба, а Вам, наоборот, нужно увеличение.

Ясно, что для увеличения масштаба придется делать обрезку картинки, иначе в ту же область она никак не влезет. В ту же область может влезть только ЧАСТЬ увеличенной картинки - значит, раз нельзя увеличивать dRect, то надо уменьшать sRect.

Посмотрите StrechBlt в справке по WinAPI.


 
snake-as ©   (2009-05-31 14:57) [2]

Это понятно, что часть. Но у меня программа так сделана, что картинку можно двигать. Т.е, конечно, область отображения будет больше при увеличении, но картинка все равно должна вся помещаться. Поэтому этот вариант не подходит. StrechBlt посмотрю.


 
Юрий Зотов ©   (2009-05-31 19:34) [3]

Люди, кто-нибудь что-нибудь понимает?
Я - нет.


 
Anatoly Podgoretsky ©   (2009-05-31 19:40) [4]

Видимо никогда не играл в 3d игры, типа Doom


 
easy ©   (2009-05-31 20:14) [5]


> Юрий Зотов © (31.05.09 19:34) [3]


> Anatoly Podgoretsky © (31.05.09 19:40) [4]

не, это как колесиком покрутить, а потом таскать


 
Anatoly Podgoretsky ©   (2009-05-31 20:22) [6]

В общем все просто - оторажение динамически изменяемого (размеры) окна источника на постоянное окно приемника с маштабированием.


 
Германн ©   (2009-05-31 20:44) [7]

TScrollBox не подойдет?


 
Юрий Зотов ©   (2009-06-01 09:15) [8]

> Anatoly Podgoretsky ©   (31.05.09 20:22) [6]

Угу. Только непонятно, каким волшебным образом человек собирается вписать картинку увеличенного масштаба в тот же прямоугольник-приемник всю полностью, без уменьшения прямоугольника-источника.


 
Anatoly Podgoretsky ©   (2009-06-01 19:58) [9]

> Юрий Зотов  (01.06.2009 9:15:08)  [8]

StrechDraw


 
Юрий Зотов ©   (2009-06-01 22:37) [10]

> Anatoly Podgoretsky ©   (01.06.09 19:58) [9]

Да хоть восемь раз. Это невозможно физически.

Нельзя залить всю 100-литровую бочку в одну поллитровую бутылку. Не уместится, сколько с бубном ни пляши.

Либо надо увеличивать емкость бутылки, либо придется ограничиться заливкой лишь части бочки.


 
Smile   (2009-06-01 22:54) [11]

> Юрий Зотов ©   (01.06.09 22:37) [10]

На мой взгляд, это слишком категорично:)
Не исключено, что у автора топика есть в "загашнике" некоторое (определенное) количество "битмапов", которыми он в праве распоряжаться, по своему усмотрению, определенным образом на всевозможные манипуляции с элементами управления "мыши"
:)


 
Юрий Зотов ©   (2009-06-02 00:16) [12]

> Smile   (01.06.09 22:54) [11]

Мы не знаем, что там у кого есть в загашнике. Мы знаем только то, что написано.

А написано следующее. Есть два одинаковых прямоугольника. В одном из них находится картинка и занимает весь его размер. Автор хочет картинку увеличить и эту увеличенную картинку отобразить ВСЮ ПОЛНОСТЬЮ во втором прямоугольнике.

А прямоугольники одинаковые и поэтому УВЕЛИЧЕННАЯ картинка ВСЯ ПОЛНОСТЬЮ туда просто не влезет. Нужно либо увеличивать размер второго прямоугольника, либо копировать в него только ЧАСТЬ картинки. И никак иначе не получится, сколь бы категорично оно ни звучало.

Ну нельзя залить бочку в бутылку, понимаете? Невозможно. Хоть лопни.


 
Германн ©   (2009-06-02 00:35) [13]


> Юрий Зотов ©   (01.06.09 22:37) [10]

Ну не может автор чётко выразить свои мысли, имхо.
Я предложил свой вариант в [7] . Мой телепатор подсказывает, что это автору и нужно. Но автор молчит, значит ему ничего и не нужно.


 
Anatoly Podgoretsky ©   (2009-06-02 00:59) [14]

> Юрий Зотов  (02.06.2009 0:16:12)  [12]

Юрий, увеличение идет меньшего прямоугольника во второй.
Приерно так, в цикле уменьшается RECT первого и выводится на второй. Эти достигается эффект прилижения. Никакого чуда.


 
Юрий Зотов ©   (2009-06-02 01:05) [15]

> Anatoly Podgoretsky ©   (02.06.09 00:59) [14]
> уменьшается RECT первого

Если бы. Пару цитат приведу:

> Юрий Зотов ©   (31.05.09 14:14) [1]
> раз нельзя увеличивать dRect, то надо уменьшать sRect.

> snake-as ©   (31.05.09 14:57) [2]
> этот вариант не подходит.

После чего пришли к бочке и бутылке.


 
Германн ©   (2009-06-02 01:20) [16]


> Юрий Зотов ©   (02.06.09 01:05) [15]


> > Юрий Зотов ©   (31.05.09 14:14) [1]
> > раз нельзя увеличивать dRect, то надо уменьшать sRect.
>
>
> > snake-as ©   (31.05.09 14:57) [2]
> > этот вариант не подходит.


> После чего пришли к бочке и бутылке.
>

После чего следует прийти к варианту  [7]!
Ну сколько раз нужно ещё это повторять! ?
:)
Ну конечно. Если кого сразу тянет к "бочке и бутылке", то тут я пас. Раз тянет, то ...


 
antonn ©   (2009-06-02 01:44) [17]

смысл тут спорить, если у автора недостаточно понятное описание желания :)


 
Германн ©   (2009-06-02 01:54) [18]


> antonn ©   (02.06.09 01:44) [17]
>
> смысл тут спорить, если у автора недостаточно понятное описание
> желания :)
>

От тебя такого не ожидал! Но тут ты прав!


 
antonn ©   (2009-06-02 02:06) [19]

чего не ожидал, тут просто двойственное понятие че нужно автору :)
тем более все так скучно, автора не прессуют, спорите м/у собой потихоньку, аж не прицепишься... %)


 
Германн ©   (2009-06-02 02:17) [20]


> тем более все так скучно, автора не прессуют, спорите м/у
> собой потихоньку, аж не прицепишься... %)
>

А как тут автора "прессовать"? Он "плюнул" вопрос и самоустранился.
Но некоторых Мастеров сей вопрос заинтересовал. Чем? Ну я и сам не знаю.


 
Anatoly Podgoretsky ©   (2009-06-02 07:40) [21]


> Юрий Зотов ©   (02.06.09 01:05) [15]

Юрий мог бы не приводить, ты прекрасно все поинмаешь, а споришь от - не знаю от чего споришь.


 
Dennis I. Komarov ©   (2009-06-02 12:04) [22]


> Он "плюнул" вопрос и самоустранился.

налетели... испугали... :)


 
Юрий Зотов ©   (2009-06-02 12:40) [23]

> Anatoly Podgoretsky ©   (02.06.09 07:40) [21]

А я даже и не спорю. Я хочу, чтобы автор понял, что если нельзя ни увеличивать dRect, ни уменьшать sRect, то задача решения не имеет. Даже теоретически не имеет.

Поэтому в ТАКОЙ постановке никакие Stretch ему не помогут - то есть, ему надо думать и менять постановку. Вот я и хочу, чтобы он это понял.

А спорить тут не с чем. С законами геометрии не поспоришь.


 
antonn ©   (2009-06-02 12:55) [24]


> то есть, ему надо думать и менять постановку.

просто переформулировать задачу, зачем так зарываться в буквоедство и упирать на то, что задача в его постановке не решаема :)
насколько я понял (по одной из версий :)) автору нужен зум, но его не устраивает зум способом разворачивания формы. То, что source rect можно взять поменьше он не догадался наверное :)


 
Юрий Зотов ©   (2009-06-02 13:05) [25]

> antonn ©   (02.06.09 12:55) [24]

> То, что source rect можно взять поменьше он не догадался наверное

Так ему в первом же посте об этом было сказано. А во втором он сказал, что этот вариант не подходит. Вот и получились бочка с бутылкой.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
15-1243234883
b/@.
2009-05-25 11:01
2009.07.26
Какой метод разработки предпочитаете ?


2-1243504299
Pavlov
2009-05-28 13:51
2009.07.26
Путь к файлу


15-1243110603
Юрий
2009-05-24 00:30
2009.07.26
С днем рождения ! 24 мая 2009 воскресенье


11-1203566557
Jon
2008-02-21 07:02
2009.07.26
Error with CxKOLTiffJpg


2-1243836317
AntiUser
2009-06-01 10:05
2009.07.26
Чем обусловлено использование событий On... и CallBack функций?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский