为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用包图标作为鼠标光标?

如何使用包图标作为鼠标光标?

C#
噜噜哒 2022-09-04 16:49:54
我有以下代码,我用它来提供有关拖放操作的鼠标光标反馈。它使用本地游标文件。private void UserControl_GiveFeedback(object sender, GiveFeedbackEventArgs e){    if (e.Effects == DragDropEffects.None)    {        e.UseDefaultCursors = true;        e.Handled = true;        return;    }    if (cursor == null)    {        StreamResourceInfo s = Application.GetResourceStream(new Uri(@"pack://application:,,,/Schedule/Week/ContentCopy.cur", UriKind.RelativeOrAbsolute));        cursor = new Cursor(s.Stream);        Mouse.SetCursor(cursor);        e.UseDefaultCursors = false;    }    e.Handled = true;}现在,我想将此代码更改为使用 Xaml 库中的材质设计中的包图标。我可以在代码中得到这样的图标:using MaterialDesignThemes.Wpf;var icon = new PackIcon { Kind = PackIconKind.DocumentCopy };但我不知道如何将其转换为适合对象使用的流。Cursor
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

A 是包装元素的,不能直接用作游标。PackIconControlPath

您可以做的是尝试使用@Ray Burns的方法从元素创建游标。PackIconConvertToCursor

另一种选择是简单地拍摄图标的屏幕截图,将其另存为图像,然后使用某些工具从中创建光标。网上有很多“将png转换为光标”和类似的工具。


查看完整回答
反对 回复 2022-09-04
?
aluckdog

TA贡献1847条经验 获得超7个赞

我能够使用类似于此处描述的光标创建方法(在mm8的答案中的链接中没有步幅问题)。


此外,使用 PackIconControl 的代码如下所示。


    PackIconControl pic = new PackIconControl() { Kind = PackIconMaterialKind.CursorDefaultOutline, Width = 16, Height = 16};

    pic.Style = Application.Current.FindResource(typeof(PackIconControl)) as Style;

    pic.Foreground = Brushes.White;

    m_MyCursor = CursorUtil.ConvertToCursor(pic, new Point(4,1));

一些评论:


我必须显式指定样式,因为我尚未将控件添加到可视化树中。我的应用的资源字典中包含 mahapps 样式。


CursorUtil.ConvertToCursor是上述链接中提到的方法。


Point(4,1) 将光标的热点放在大约 PackIconMaterialKind.CursorDefaultOutline 箭头的尖端。其他图标将具有不同的热点,这些热点适用于其特定形状。


查看完整回答
反对 回复 2022-09-04
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信