2

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

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

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

4

2 回答 2

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.DrawingSystem.Drawing.Drawing2D

于 2008-11-10T15:35:33.377 回答
0

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

至少那是我做这个练习时在我的 Head First C# 书中发生的事情。

于 2008-11-10T15:53:11.063 回答