gpt4 book ai didi

wpf - 在 WPF 上下文菜单中使用当前显示比例

转载 作者:行者123 更新时间:2023-12-05 07:21:22 34 4
gpt4 key购买 nike

我的 WPF 应用程序是 Per-Monitor Aware 并且通常可以很好地扩展。但是,当应用程序窗口在第二台显示器上显示 scale=150% 并且我打开上下文菜单时,它使用主显示屏上的 scale=100% 使菜单项非常小:

(有趣的是,子菜单项使用正确的 150% 比例)

我打开上下文菜单设置 IsOpen = true:

        private void Button_Click(object sender, RoutedEventArgs e)
{
ContextMenu menu = new ContextMenu();

menu.Items.Add("item 1");
menu.Items.Add("item 2");

MenuItem submenu = new MenuItem();
submenu.Header = "submenu";
submenu.Items.Add("more 1");
submenu.Items.Add("more 2");
menu.Items.Add(submenu);

menu.IsOpen = true;
}

如何配置上下文菜单以使用其打开时的显示设置,而不是默认的主显示器?

最佳答案

您可以 RenderTransform 撤消从 PrimaryScreen 缩放和从 Visual 缩放到 dpiScale:

var visual = e.Source as Visual;
if (visual != null)
{
var dpiScale = VisualTreeHelper.GetDpi(visual);
System.Windows.Forms.Screen.PrimaryScreen.
GetDpi(DpiType.Effective, out uint dpiX, out uint dpiY);
menu.RenderTransform =
new ScaleTransform(dpiScale.DpiScaleX / ((double)dpiX / 96),
dpiScale.DpiScaleY / ((double)dpiY / 96));
menu.IsOpen = true;
}

关于wpf - 在 WPF 上下文菜单中使用当前显示比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936098/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com