gpt4 book ai didi

c# - 如何将 WPF 支持添加到 .NET 5 Winforms 项目

转载 作者:行者123 更新时间:2023-12-04 16:38:52 26 4
gpt4 key购买 nike

我正在将旧的 .NET Framework 4 WinForms 应用程序转换为 .NET 5。在这种情况下,最简单的方法是重新创建项目,这在很大程度上是可行的。但是,我有一种方法可以从内存流中解码 JPG 图像:

            // Look for JFIF header
MemoryStream memStream = new MemoryStream( rawData );
JpegBitmapDecoder decoder = new JpegBitmapDecoder( memStream,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default );
BitmapSource bmpSource = decoder.Frames[0];
Bitmap bitmap = new Bitmap( bmpSource.PixelWidth, bmpSource.PixelHeight,
PixelFormat.Format24bppRgb );

这失败了,因为 VS 2019 提示“使用 System.Windows.Media.Imaging”导致错误,并且 JpegBitmapDecoder 显示为红色波浪线。如果我将鼠标悬停在 JpegBitmapDecoder 上,我会看到“使用 System.Windows.Media.Imaging;来自 PresentationCode”的选项。

但是,选择它会导致 VS 2019 卡在“执行建议的操作”上,尝试添加使用。

该项目是针对 .NET 5 的,我已经添加了 Microsoft.Windows.Compatibility NuGet 包,那么我做错了什么?或者,如何访问 JpegBitmapDecoder?

最佳答案

您写道您使用的是 Visual Studio 2019(例如版本 16.7.6)。但是,据我所知,.NET 5 项目仅在 Visual Studio 2019 预览版(即版本 16.8.0 预览版)中受支持。

注意:.NET 5 项目仅在 Visual Studio 2019 及更高版本的 16.8.0 版本中受支持(我才意识到“预览版”已进入发布状态)。

当我尝试在 Visual Studio 2019 预览版中重现您的问题时,我遇到了一个稍微不同的问题:当我选择“使用 System.Windows.Media.Imaging;来自 PresentationCode” 菜单项时,出现进度对话框:

"using System.Windows.Media.Imaging; (from PresentationCore)" progress dialog

这个对话似乎永远持续下去。 Visual Studio 似乎从未真正完成该操作。

因此该功能的这一部分似乎已损坏。但是,幸运的是,您可以手动执行 Visual Studio 应该为您完成的相同操作。只需选择项目,然后从“项目” 菜单中选择“编辑项目文件”,然后添加<UseWPF>true</UseWPF>。到主要项目<PropertyGroup>元素。

完成后,项目文件可能如下所示:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
</PropertyGroup>

</Project>

此时,项目“依赖项”“框架”项下的条目“Microsoft.WindowsDesktop.App.WindowsForms”> WPF 库应更改为 "Microsoft.WindowsDesktop.App" 并将包括您需要的 Winforms 和 WPF 库。

您也可以采用另一种方式,将 Winforms 支持添加到现有的 WPF 项目中,只需添加 <UseWindowsForms/>元素代替。

当然,这一切都回避了一个问题,为什么您不只使用 GDI+ 图像处理类型。 Winforms 可以像加载 WPF 一样加载 JPEG 文件,所以你为什么要依赖 WPF 还不清楚。但是还有其他混合搭配的原因。无论您想在 .NET 5 项目中组合 Winforms 和 WPF 的原因是什么,上面的内容都可以做到。

关于c# - 如何将 WPF 支持添加到 .NET 5 Winforms 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64796358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com