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

我有以下代码,我用它来提供有关拖放操作的鼠标光标反馈。它使用本地游标文件。


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


噜噜哒
浏览 97回答 2
2回答

HUWWW

A 是包装元素的,不能直接用作游标。PackIconControlPath您可以做的是尝试使用@Ray Burns的方法从元素创建游标。PackIconConvertToCursor另一种选择是简单地拍摄图标的屏幕截图,将其另存为图像,然后使用某些工具从中创建光标。网上有很多“将png转换为光标”和类似的工具。

aluckdog

我能够使用类似于此处描述的光标创建方法(在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 箭头的尖端。其他图标将具有不同的热点,这些热点适用于其特定形状。
打开App,查看更多内容
随时随地看视频慕课网APP