Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Проблема с отображением рисунка


Автор: XavierElf 28.3.2007, 18:50
Помогите кто-нибудь решить проблему. Заключается в следующем:
Создаю объект Bitmap. Загружаю в него рисунок из ресурсов. Размер рисунка 14х14(px). Рисую его на контроле так: 
Код

...
Point location = new Point(rectBounds.Left, rectBounds.Top);
g.DrawImage(myImage, location);
...

У меня выводит рисунок больше, чем он есть на самом деле, то есть примерно 18х18(px).
Пробовал так:
Код

...
Point location = new Point(rectBounds.Left, rectBounds.Top);
g.DrawImageUnscaled(myImage, location);
...

Всё равно эффект тот же.
Подскажите, в чём может крыться причина такого поведения рисунка?

Автор: Retro 29.3.2007, 02:10
Цитата(XavierElf @  28.3.2007,  17:50 Найти цитируемый пост)
Подскажите, в чём может крыться причина такого поведения рисунка?

Что-то с трудом представляю как Bitmap может увеличится с 14-ти до 18-ти пикселей, его должно заплющить неподетски. Разве что рамка(бордер) по два пикселя вокруг.
А какой контрол?

Автор: XavierElf 29.3.2007, 08:18
Контрол я создаю свой - делаю скроллбар с нуля. А проблема такая возникла с кнопками скролбара. Самое интересное, что бэкгранунд отображается нормально, хотя я его рисую тоже с помощью рисунков, только вывожу через кисть текстур и методом FillRectangle.

Автор: XavierElf 29.3.2007, 17:07
Всё, проблему решил! Как оказалось, шарп по умолчанию считает, что размеры рисунка задаются в милиметрах, отсюда такое несоответствие. Чтобы исправить это сделал так:

Код

void _DrawImage(Graphics g, Bitmap image, RectangleF rect)
{
    Point location = new Point((int)rect.X, (int)rect.Y);
    Size size = new Size((int)rect.Width, (int)rect.Height);

    g.DrawImage(image, new Rectangle(location, size), 0, 0,
                  image.Width, image.Height, GraphicsUnit.Pixel);
}

Автор: mr.DUDA 30.3.2007, 08:53
Можно было у графикса поставить GraphicsUnit в Pixel.

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