【问题标题】:.NET set image display size.NET 设置图像显示大小
【发布时间】:2008-11-10 15:27:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms image-processing


    【解决方案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 项目中主窗体的背景图像。您需要为 System.DrawingSystem.Drawing.Drawing2D 提供 using 语句。

    【讨论】:

    • 谢谢我的想法是显示尺寸与实际图像分辨率是分开的......所以它应该可以单独修改而无需真正编辑图像,但也许不是。
    • 不幸的是,没有......希望(修改版)这对你有用。 :)
    【解决方案2】:

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

    至少在我做这个练习时,我的 Head First C# 书中发生了这种情况。

    【讨论】:

    • 谢谢,我知道不幸的是,这需要以我无法覆盖的方法传入图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多