怎么让自定义的Cursor,在DPI变化时跟着变。

boris_cui 2010-11-12 01:43:37
有一个WPF的程序,上面有一个自定义的cursor,希望在DPI变化时,那个cursor跟着变大或变小。有什么好办法吗?
谢谢。

能想到的办法是做三个不同大小的cursor,然后,在不同dpi下,用不定cursor.
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
boris_cui 2010-12-05
  • 打赏
  • 举报
回复

Matrix m =
PresentationSource.FromVisual(Application.Current.MainWindow).CompositionTarget.TransformToDevice;
double dx = m.M11;
double dy = m.M22;



From:
http://blogs.msdn.com/b/jaimer/archive/2007/03/07/getting-system-dpi-in-wpf-app.aspx
boris_cui 2010-11-12
  • 打赏
  • 举报
回复
从别处找了一段得dpi的。WPF有自带的能解决问题的方法吗?


private const int HORZRES = 8;
private const int VERTRES = 10;
private const int LOGPIXELSX = 88;
private const int LOGPIXELSY = 90;

[DllImport("User32.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
private static extern IntPtr GetDC(IntPtr hWnd);

[DllImport("Gdi32.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
private static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

private const int kBaseDpi = 96;
private const int kLargeDpi = 144;
private const int kLargest = 192;

static int getDpi()
{
IntPtr dc = GetDC(IntPtr.Zero);
return GetDeviceCaps(dc, LOGPIXELSX);
}


三岁、就很帅 2010-11-12
  • 打赏
  • 举报
回复
帮你顶下 接分

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧