无法解析创建的 System.Windows.Control.Image 而不是 System.Drawing.Image

问题描述 投票:0回答:1

我正在将 C# 程序移至 WPF 应用程序中,为了从记录中导出文件,我需要使用以下代码:

// Construct _imgfiles from the records
string _imgfile = _maindest + "Images\\" + _pageseq.ToString("0000") + ".tif";
if ((_recpage.FileType == FileType.ImageFile) && (_recpage.ImageType == ImageFileType.TIFF))
{
    // Copy the record into it's designated directory
    File.Copy(_recpage.FileLocation, _imgfile);
    totalRecords++;
}
else if ((_recpage.FileType == FileType.ImageFile) && (_recpage.ImageType == ImageFileType.JPEG || _recpage.ImageType == ImageFileType.BMP))
{
    Image _tmpimg = Image.FromFile(_recpage.FileLocation);
    _tmpimg.Save(_imgfile, _conn.EncoderInfo, _conn.ImgEncParams);
    _totalpages++;
}

我在以下行遇到错误:

Image _tmpimg = Image.FromFile(_recpage.FileLocation);

正在创建的“图像”不是我访问“FromFile”函数所需的 System.Drawing.Image 之一,而是来自 System.Windows.Control.Image 的图像。代码的其他区域仍然需要它,因此将其删除并不是一个合适的修复方法。

我尝试直接调用它:

System.Drawing.Image _tmpimg = System.Drawing.Image.FromFile(_recpage.FileLocation);

运气不佳,命名空间别名也没有任何好处:

using DrawingImage = System.Drawing.Image;

DrawingImage _tmpimg = DrawingImage.FromFile(_recpage.FileLocation);

我在另一个问题中读到 System.Drawing.Image 不应该在 WPF 应用程序中使用,但是该问题与位图相关并且是 7 年前的问题,所以我不知道它在这里有多相关。有什么帮助吗?

c# .net wpf visual-studio system.drawing
1个回答
0
投票

System.Drawing 命名空间跨越多个 dll。它们包括 .Primitives 和 .Common.dll。

Drawing.Image 类是包含在 System.Drawing.Common.dll 中的抽象类。

默认情况下,WPF 应用程序包含 System.Drawing.Common.dll。

要将 System.Drawing.Common.dll 添加到 WPF 应用程序,可以通过包管理器将其添加为 NuGet 包。这将解决“图像”问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.