我有以下代码,我用它来提供有关拖放操作的鼠标光标反馈。它使用本地游标文件。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 回答
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 箭头的尖端。其他图标将具有不同的热点,这些热点适用于其特定形状。
- 2 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消