.NET设置图像显示大小

时间:2008-11-10 15:27:29

标签: c# winforms image-processing

我正在使用一些自定义控件,其中一个是可以显示图像的工具提示控制器,因此我使用以下代码来实例化它:

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

显然可以内联它,但此刻只是测试。麻烦的是图像有时是错误的大小,有没有办法设置显示尺寸。我目前可以看到的唯一方法是使用GDI +或类似的东西来编辑图像。当我只想调整显示尺寸而不影响实际图像时,似乎需要进行大量的额外处理。

2 个答案:

答案 0 :(得分:1)

从源中加载图像对象后,高度和宽度(以及大小和所有辅助属性)都是只读的。因此,您无法使用GDI +方法在RAM中调整大小,然后相应地显示它。

你可以采取很多方法,但是如果要将它封装到一个可以重用的库中,如果再次出现这个问题,那么你就可以了。这不是完全优化的(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语句1}}。

答案 1 :(得分:0)

在Winforms中,如果在PictureBox控件中包含图像,可以将PictureBox控件设置为缩放到特定的高度/宽度,图像应该符合。

至少那是我在Head First C#书中发生的事情。