Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



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


15-1243202952
KilkennyCat
2009-05-25 02:09
2009.07.26
Небольшой эксперимент:


15-1243406709
Кто б сомневался
2009-05-27 10:45
2009.07.26
Защита ПО на основе серийника железа, и другой комьпютер


2-1243571683
Gans
2009-05-29 08:34
2009.07.26
Сообщение при свернутом окне


15-1242673872
Andy BitOff
2009-05-18 23:11
2009.07.26
Заработал универсальный вычислитель ответов. Потестим?




   Наверх