【问题标题】:Getting errors when loading images in class definition在类定义中加载图像时出错
【发布时间】:2012-08-29 14:17:39
【问题描述】:

我正在处理一个爱好国际象棋项目,当我加载棋子图像时,它会引发无法找到图像的异常。我知道情况并非如此,它之前已经工作过,当我以一种方法加载它们时它确实有效。它们位于正确的位置并且文件路径正确。起初代码使用 Bitmap 类而不是 Image 类,结果相同。

我在类定义中加载图像的主要原因是我多次使用大多数图像,我想确保每个图像只加载一次。

这显示了类定义和第一个按钮,但是为每个部分加载了一个图像。

public partial class PieceButton : Button
{
    private static readonly Image blackBishop = Image.FromFile("images/black_bishop.gif");

稍后,当一块移动到按钮时,我会将加载的图像应用到按钮。 该类继承 Button 因为默认按钮行为非常有用。 图像是 .gif,因为这样按钮背景仍然可见(字段为白色或黑色)。

所以我的问题是:如何在类定义中正确加载这些图像?

【问题讨论】:

  • 你能把你加载到方法中的代码贴出来吗?
  • “它会抛出无法找到图像的异常。我知道不是这种情况” - 确定吗?我倾向于相信运行时。您意识到您正在从相对路径静态初始化此对象,对吗?
  • 另外(这并不是为了回答这个问题,而是为您提供替代路径)您可能需要考虑将图像作为资源添加到 Resources.resx 中。如果您使用的是 Visual Studio,它比您在上面尝试做的要容易得多。
  • @Ed S,是的,这有关系吗?我假设基本路径始终是我的调试文件夹,我将图像复制到其中。我知道它有效的原因是因为它以前曾有效。我会尝试将图像添加到我的资源中。
  • 在资源文件中添加图片是一个更好的解决方案。如果你回答这个问题,我会接受。加载图片:this.Image = Chess.Properties.Resources.white_bishop;

标签: c# image


【解决方案1】:

考虑将图像作为资源添加到 Resources.resx 并让 Visual Studio 担心生成代码以实际将基础数据转换为 Image 对象。这有许多优点,最大的优点是任何问题(例如不存在的图像)都会在编译时被捕获,因为 VS 会提前为您生成 Properties.Resources.whatever。

您还将获得所需的“加载图像一次”行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-02
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2013-02-23
    • 2014-11-12
    • 2017-05-24
    相关资源
    最近更新 更多