将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource

2023-12-13

存在将 System.Drawing.Icon 转换为 System.Media.ImageSource(将 System.Drawing.Icon 转换为 System.Media.ImageSource)。但是当我使用WinUI而不是WPF时,这个分辨率似乎不可用。我需要将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource 以在图像控件中显示应用程序的图标。

我尝试使用 Microsoft.UI.Xaml.Media.Imaging.BitmapSource.FromAbi(System.Drawing.Icon.Icon.Handle),但它不适用于 System.AccessViolationException。

那么,如何获取 Icon 的 Microsoft.UI.Xaml.Image Source 版本?


这是一个从以下位置转换而来的 C# 代码GDI+ 图标 to WinUI3 位图源,使用图标的像素从一个复制到另一个。

public static async Task<Microsoft.UI.Xaml.Media.Imaging.SoftwareBitmapSource> GetWinUI3BitmapSourceFromIcon(System.Drawing.Icon icon)
{
    if (icon == null)
        return null;

    // convert to bitmap
    using var bmp = icon.ToBitmap();
    return await GetWinUI3BitmapSourceFromGdiBitmap(bmp);
}

public static async Task<Microsoft.UI.Xaml.Media.Imaging.SoftwareBitmapSource> GetWinUI3BitmapSourceFromGdiBitmap(System.Drawing.Bitmap bmp)
{
    if (bmp == null)
        return null;

    // get pixels as an array of bytes
    var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
    var bytes = new byte[data.Stride * data.Height];
    Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);
    bmp.UnlockBits(data);

    // get WinRT SoftwareBitmap
    var softwareBitmap = new Windows.Graphics.Imaging.SoftwareBitmap(
        Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8,
        bmp.Width,
        bmp.Height,
        Windows.Graphics.Imaging.BitmapAlphaMode.Premultiplied);
    softwareBitmap.CopyFromBuffer(bytes.AsBuffer());

    // build WinUI3 SoftwareBitmapSource
    var source = new Microsoft.UI.Xaml.Media.Imaging.SoftwareBitmapSource();
    await source.SetBitmapAsync(softwareBitmap);
    return source;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46

随机推荐

  • C 语言有 setfill() 替代方案吗?

    In C int main cout lt lt setfill lt lt setw 10 lt lt 5 lt lt endl return 0 Outputs 5 有没有setfill C 的替代品 或者如何在 C 中执行此操作而无需
  • Windows 窗体应用程序,带有窗体的自动缩放控件

    我是新手 设计一个可以调整大小的表单 并且我希望我的文本框 标签和按钮随表单调整大小 有人可以告诉我该怎么做吗 这取决于您需要的布局类型 您必须执行的 基本工具 具有以下属性 Anchor and Dock Anchor 使用 Anchor
  • 在运行时生成 HTML 文件并作为电子邮件附件发送

    我有一个项目要求 我们需要将 HTML 格式的日志表附加到发送给用户的电子邮件中 我不希望日志表成为正文的一部分 我不想使用 HTMLTextWriter 或 StringBuilder 因为日志表非常复杂 是否有另一种我没有提到的方法或可
  • PHP 从 XML 中检索数据

    我第一次尝试从地图应用程序的 XML 检索数据失败了 这是 XML Feed 的一部分
  • 使用productElements将元组转换为HList

    我正在使用 Shapeless 2 2 5 我尝试使用下面的代码将元组转换为 HList import shapeless import syntax std product 23 foo 2 0 true productElements
  • JavaScript、浏览器、窗口关闭 - 发送 AJAX 请求或在窗口关闭时运行脚本

    我试图找出用户何时离开指定页面 找出他何时使用页面内的链接导航离开是没有问题的 但我需要标记一些内容 例如他关闭窗口或键入另一个 URL 并按 Enter 键时 第二个不太重要 但第一个很重要 所以问题是 我怎样才能看到用户何时关闭我的页面
  • 如何以编程方式设置 iPhone 壁纸

    我正在开发一个应用程序 其中我必须将图像设置为iPhone壁纸 滑动解锁 屏幕上的背景图像 我们有这方面的 API 参考吗 请帮忙 提前致谢 帕尔梅斯瓦尔 目前 您唯一可以做的就是将图像保存到相机胶卷中 并为用户提供有关如何使用新图像更改壁
  • 在trigger_error之前的'@'(沉默运算符,at符号)的目的是什么?

    我在许多 Symfony 包 以及其他代码 中看到了这一行 trigger error The class is deprecated E USER DEPRECATED 根据文档 at 运算符用于消除错误 http php net man
  • 创建 atoi 函数

    我正在尝试创建自己的 atoi 函数 通过以下代码 我得到的返回值为 0 无论我更改函数中的数字变量 我都会得到返回值 关于修改代码有什么建议吗 my atoi function int atoi me char numstring int
  • HttpClient 中使用 wait 的异步调用永远不会返回

    我正在从基于 xaml 的内部拨打电话 C Win8 CP上的metro应用 此调用只需访问 Web 服务并返回 JSON 数据 HttpMessageHandler handler new HttpClientHandler HttpCl
  • 阻止直接 URL 访问图像文件?

    我想阻止人们通过在浏览器地址栏中输入 URL 来获取我网站的图像 同时允许他们在访问网页时查看图像 我尝试了以下 htaccess 代码 RewriteEngine on RewriteCond HTTP REFERER http www
  • JSF 2.0 简单登录页面

    我需要限制对应用程序的一部分的访问 为了访问该部分 用户需要登录 我的数据库中有一个名为 User 的表 其中包含用户名和散列密码以及由两个输入和一个提交组成的登录表单 但是 我不知道应该使用哪些类 数学来登录用户 我假设 jsf 中支持此
  • 保持mysql连接的正确方法[重复]

    这个问题在这里已经有答案了 我有一个 24 7 运行的应用程序 它使用 mysql 它的不同功能都使用mysql 实现它的一种方法是在应用程序中创建一个全局 mysql 实例 如下所示 self db MySQLdb connect hos
  • 导出 Room 数据库并附加到电子邮件 Android Kotlin

    我有以下代码用于导出房间数据库 然后将其附加到电子邮件中 目前 用户首先必须选择要保存数据的位置 然后才能附加数据 有没有一种方法可以做到这一点 而不必首先询问用户在哪里保存数据库 这是我的代码 fun exportDatabase val
  • 如何在 iis 服务器上启用 mod_rewrite

    我发现我的服务器上没有启用 mod rewrite 功能 SERVER SERVER SOFTWARE Microsoft IIS 7 0 架构 x86 我如何启用 mod rewrite 有人可以帮助我吗 对我有用的答案是安装微软 URL
  • 在 MKMapView 中设置当前位置图标下侧

    我想在地图下方显示我当前的位置 iOS 6 和 iOS 7 如下面的屏幕截图所示 用户可以看到进一步的视图 带有谷歌地图的谷歌默认应用程序 Right now the cursor that shows center in the view
  • 当服务器处于Unix套接字时如何连接到数据库?

    我与数据库 phpmyadmin 的连接有问题 这只是因为我的服务器位于 UNIX 套接字中 我不知道如何连接到它 我站在窗户上 如果我的服务器采用 TCP IP 下面的代码可以正常工作 My code
  • JQuery:ajax 请求时出现“未捕获类型错误:非法调用”

    我正在使用这个 AJAX 函数将我的表单发布到特定的 URL 它正在获取所需的 URL 并进行处理 但是当它返回结果时 它会给出错误
  • 如何避免实体框架 4.3.1 中的重复插入

    我有一个使用代码优先方法创建的小模型 一个类City其中仅包含有关城市名称的信息 public class City public City Posts new List
  • 将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource

    存在将 System Drawing Icon 转换为 System Media ImageSource 将 System Drawing Icon 转换为 System Media ImageSource 但是当我使用WinUI而不是WP