.NET установить размер отображения изображения - PullRequest
2 голосов
/ 10 ноября 2008

Я использую некоторые пользовательские элементы управления, одним из которых является контроллер всплывающей подсказки, который может отображать изображения, поэтому я использую следующий код для его создания:

Image newImage = Image.FromFile(imagePath);
e.ToolTipImage = newImage;

, очевидно, мог бы встроить это, но только тестирование в данный момент. Беда в том, что изображение иногда имеет неправильный размер, есть ли способ установить размер дисплея. Единственный способ, которым я сейчас вижу, - это редактирование изображения с использованием GDI + или чего-то подобного. Похоже, много дополнительной обработки, когда я только хочу отрегулировать размер дисплея, не влияют на фактическое изображение.

Ответы [ 2 ]

1 голос
/ 10 ноября 2008

После того, как у вас есть объект изображения, загруженный из его источника, высота и ширина (и размер, и все вспомогательные свойства) доступны только для чтения. Таким образом, вы застряли с методами GDI + для изменения размера в оперативной памяти, а затем отображать его соответствующим образом.

Существует множество подходов, которые вы можете использовать, но если вы захотите инкапсулировать это в библиотеку, которую вы сможете использовать повторно, если эта проблема возникнет снова, вы будете готовы к работе. Это не совсем оптимизировано (IE может иметь некоторые ошибки), но должно дать вам представление о том, как к нему подойти:

Image newImage = Image.FromFile(myFilePath);
Size outputSize = new Size(200, 200);
Bitmap backgroundBitmap = new Bitmap(outputSize.Width, outputSize.Height);
using (Bitmap tempBitmap = new Bitmap(newImage))
{
    using (Graphics g = Graphics.FromImage(backgroundBitmap))
    {
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        // Get the set of points that determine our rectangle for resizing.
        Point[] corners = {
            new Point(0, 0),
            new Point(backgroundBitmap.Width, 0),
            new Point(0, backgroundBitmap.Height)
        };
        g.DrawImage(tempBitmap, corners);
    }
}
this.BackgroundImage = backgroundBitmap;

Я проверил это, и это сработало. (Он создал версию одного из моих обоев рабочего стола размером 200x200, а затем установил его в качестве фонового изображения главной формы в чистом проекте WinForms. Вам понадобятся using операторы для System.Drawing и System.Drawing.Drawing2D.

0 голосов
/ 10 ноября 2008

В Winforms, если вы содержите изображение внутри элемента управления PictureBox, элемент управления PictureBox можно установить для увеличения до определенной высоты / ширины, и изображение должно соответствовать.

По крайней мере, так произошло в моей книге Head First C #, когда я выполнил упражнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...