Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Проблема с GDI+ Выводятся изображения...


Автор: Gnusss 18.7.2007, 13:58
Привет всем.

Сегодня появилась странная проблема.
Суть проблемы в том, что изображения рисуются неправильным размером.
Т.е. есть "Image: TGPImage" в него загружается картинка, размер картинки 16х16 пикселей
Код
Image:= TGPImage.Create('C:\Test\Image.png');

Далее рисуем эту картинку
Код
GPCanvas.DrawImage(Image,10,10); // GPCanvas: TGPGraphics;

И видим, что картинка получилась примерно 22х22 пикселя. Для проверки я специально закрашивал квадрат 16х16 над картинкой.
Самое инертное, что раньше такого не было, а сейчас есть, я даже не представляю, почему так происходит. Также интересно то что "Image.GetHeight" и "Image.GetWidth" возвращают правленый размер, т.е. 16.
Если кто сталкивался с похожей проблемой, сможет мне объяснить, как её исправить.

Заранее благодарю за ответ.

Автор: Alexeis 18.7.2007, 14:58
Цитата(Gnusss @  18.7.2007,  13:58 Найти цитируемый пост)
Сегодня появилась странная проблема.

  Если сделать новый, пустой проект и в нем рисовать эту же картинку, то она будет рисоваться 16х16 или 22х22?

Автор: Gnusss 18.7.2007, 17:25
Alexeis, будет 22.
И еще вроде глюк наблюдается только с картинками только 16х16.

Автор: s-mike 22.7.2007, 15:26
GDI+ умная графическая библиотека, рисует с учетом DPI. Поэтому если нужно рисовать по пиксельному размеру, то нужно в процедуре вывода указывать размер выводимого изображения. То есть:
Код

Graphics.DrawImage(Image, 0, 0, Image.GetWidth, Image.GetHeight);

Автор: MetalFan 23.7.2007, 10:23
последним параметром в DrawImage наверное стоит указать UnitPixel

Автор: s-mike 29.7.2007, 19:23
GdipDrawImageRect не подразумевает такого параметра, поскольку размер для неё и так должен указываться в пикселях.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)