Форум: "Начинающим";
Текущий архив: 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