【问题标题】:WinForms: BackgroundImage embedded as bitmap?WinForms:BackgroundImage嵌入为位图?
【发布时间】:2011-11-22 22:41:47
【问题描述】:

我最近从业务应用程序编程转向尝试(只是作为一种爱好)在 .NET (C#) 中创建纸牌游戏实现。当然,我遇到了一些差异,其中之一是游戏应用程序的图形特性。

本能地,我将所有用作窗体和控件背景的图像保存为 jpeg,然后再将它们设置为项目中的属性。然后我开始怀疑它们是否被嵌入为位图,或者我是否最好将它们保留为 .bmp 文件。在发帖之前,我试图找到这个问题的答案,但没有任何快乐。

在设计时设置 BackgroundImage 属性时,使用 jpg 文件而不是 bmp 有明显的好处吗?对于在运行时加载的图像,无论出于何种原因作为单独文件存在的应用程序附带的图像(可能在资源文件夹中),我可以看到好处,但我不确定前者。

任何见解将不胜感激。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    重要的是在设置背景时为图像使用预先计算的位图,以提高性能。

    private Bitmap renderBmp;
    public override Image BackgroundImage
    {
         set
         {
              Image baseImage = value;
              renderBmp = new Bitmap(Width, Height,
                  System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
              Graphics g = Graphics.FromImage(renderBmp);
              g.DrawImage(baseImage, 0, 0, Width, Height);
              g.Dispose();
         }
         get
         {
              return renderBmp;
         }
    } 
    

    代码示例已从this post 中提取,它解释了其他提高绘制背景图像性能的技术。

    希望对你有帮助。

    【讨论】:

    • 谢谢丹尼尔。这很有帮助。我注意到在设计时使用压缩格式(比如 jpeg)而不是位图 (.bmp) 可以显着减小编译后的可执行文件的大小,因此有这样的好处。我一定会尝试使用您的建议。谢谢。
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2021-05-02
    • 2020-01-15
    相关资源
    最近更新 更多