Увеличить изображение с помощью delphi

Я работаю с делфи. У меня есть TImage, которому я назначаю растровое изображение.

imgmain.Picture.Bitmap := bmpMain;
imgmain.Picture.Bitmap.PixelFormat := pf24bit;

imgmain является объектом TImage, а bmpMain является объектом TBitmap.

Я хочу увеличить свое изображение. У меня есть один трекбар в моей форме, и когда я нажимаю на трекбар, изображение должно увеличиваться. Что мне делать?
Спасибо.

Редактировать:
Я нашел решение на здесь Это работает, но мое изображение обрезано.


person Himadri    schedule 12.06.2010    source источник


Ответы (1)


person    schedule
comment
@Sertac Спасибо, это лучше, чем код, который я использовал. Но можете ли вы сказать мне, каково значение строки: imgmain.Canvas.Draw(x,y,bmpmain); потому что перед этой строкой мы не меняем bmpmain, тогда почему мы рисуем ее в imgmain? И под словами вырезание изображения я имею в виду, что после масштабирования фактическая длина изображения не увеличилась, но я хочу полное изображение, которое я тоже не получил из этого кода. Еще одна вещь, я поместил изображение в TScrollBar, создает ли это проблему? - person Himadri; 14.06.2010
comment
@Himadri - мы никогда не меняем bmpmain, мы только меняем отношение между логическими единицами и единицами устройства на холсте TImage. Позвольте мне попробовать на примере; Предположим, у вас есть растровое изображение шириной 96 пикселей, если ваш Screen.PixelsPerInch также равен 96 пикселей, imgmain.Canvas.Draw(x,y,bmpmain) будет рисовать растровое изображение шириной 1 на TImage. В режиме изотропной карты, если вы установите размер окна по горизонтали равным 100, а размер окна просмотра по горизонтали — 200, вы говорите, что 100 логических единиц по оси X будут представлены размером 200 пикселей. Таким образом, тот же вызов будет рисовать растровое изображение шириной 192 пикселя, или в 2, или в два раза больше. - person Sertac Akyuz; 14.06.2010
comment
@Himadri- Конечно, вы можете поместить TImage в поле прокрутки. Всякий раз, когда вы меняете масштаб, перед рисованием изображения вы должны рассчитать и установить новую ширину/высоту изображения. Для приведенного выше примера это будет f.i. imgmain.Width := bmpmain.Width * Zoom div 100; - person Sertac Akyuz; 14.06.2010
comment
@Sertac Я написал эту строку, но она не меняет ширину imgmain. Я пропустил установку какого-то свойства? Моя проблема с вырезанным изображением еще не решена. - person Himadri; 15.06.2010
comment
@Himadri - кажется, я понимаю, что ты имеешь в виду. Похоже, что если картинке изображения уже назначена графика, установка размера изображения не влияет на размер графики. Я обновил ответ, попробуйте с новым кодом. - person Sertac Akyuz; 15.06.2010