Масштабирование битмапов

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Донат
Сообщения: 6
Зарегистрирован: 17 янв 2005, 22:33

собственно проблема даже не в распечатке а...

допустим у меня есть в image1 какие нибудь прямые линие кривые и т.д проблема с следующем:
как мне скопировать это изображение и при его увеличить?
просто скопировать его несложно.
примерно что то типа Image1.Canvas.CopyRect(.....);
при этом присходит копирование 1 к 1
а мне в моем случае надо увеличить примерно в 20 раз
это реально?
Донат
Сообщения: 6
Зарегистрирован: 17 янв 2005, 22:33

т.е я на 99% уверен что такая функция есть и что так можно сделать но как??=(
если можно 1 к 1 по почему 2 к 1 нельзя?

собственно если на это никто не знает ответ то:
можно ли картику размером скажем 100на 100 пикселей при распечатке как то увеличить?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

На слове CopyRect сделайте Ctrl+Click. Вас перенесет к "procedure TCanvas.CopyRect" в Graphics.pas.

Вы увидите, что для копирования как такового вызывается функция WinAPI StretchBlt.
При этом размеры Source и Dest прямоугольников совпадают. Если они будут различаться, то произойдет масштабирование. Теперь можете все реализовать самостоятельно.

У канвы есть еще метод StretchDraw, но он проецирует всю текущую канву в указанный прямоугольник в другой канве. Т.е. нельзя задать смещение.

See Also (в хелпе):
* TCanvas.StretchDraw
* StretchBlt

PS
Правильно выбирайте тему сообщения!
Донат
Сообщения: 6
Зарегистрирован: 17 янв 2005, 22:33

огромный спасибо тебе=)
респект
Ответить