WPF从SystemParameter单元转换为与设备无关的单元

时间:2018-05-22 23:53:23

标签: c# wpf xaml

我正在尝试创建一个应用程序,它将占用屏幕上除标题栏和任务栏之外的最大工作区数量。

我不能在Xaml中使用WindowState.Maximize属性,因为我有一个基于配置文件中的项生成按钮的链接框。

我的问题是,因为SystemParameter.WorkArea.Height / Width以像素为单位给出了测量结果,但XAML中的高度需要在DIU(DIP)设备无关单元中进行测量。有没有办法在两者之间进行转换?

当我将窗口大小设置为system.parameter分辨率时,它不会覆盖整个工作区域并留下一个未覆盖的小条带,我假设是一些Windows 10区域用于调整大小或让用户执行其他操作我不需要的功能。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

public double DipsToPixelsX(double input)
{
    return input * PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M11;
}

public double DipsToPixelsY(double input)
{
    return input * PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M22;
}

public double PixelsToDipsX(double input)
{
    return input / PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M11;
}

public double PixelsToDipsY(double input)
{
    return input / PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M22;
}
相关问题