我正在WPF中设计产品模拟器。我们公司销售手持式电子医疗设备,我们想尝试使用“虚拟”皮肤(某种)GUI来表示按钮和指示灯的用户交互。
有没有办法“强制”WPF在屏幕上显示具有真实世界尺寸的东西(通过获取监视器dpi信息,或类似的东西)?
另一个例子,假设我可以使用WPF控件(DockPanels,Labels,Canvases等)布局塑料,标准尺寸的信用卡,我可以在不同桌面上使用真实信用卡的尺寸始终如一地显示它/笔记本电脑?
更新:
通过使用ViewBox
作为我窗口的LayoutRoot,我找到了一种设计“真实毫米”的聪明方法。内部任何东西的大小都可以“以毫米为单位”设计,并且将以物理尺寸显示,以便我可以为ViewBox获得正确的像素大小。而且仍然存在一定的误区:
答案 0 :(得分:1)
我“有点”用以下策略解决了问题:
我的XAML:
<Window.Resources>
<local:PixelsToMilimeters x:Key="SizeConverter"/>
</Window.Resources>
<Viewbox x:Name="LayoutRoot" Stretch="Uniform"
Width="{Binding Width, ElementName=Case, Converter={StaticResource SizeConverter}}"
Height="{Binding Height, ElementName=Case, Converter={StaticResource SizeConverter}}">
<Border x:Name="Case" Width="108" Height="68">
(...)
我的代码隐藏:
(...)
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)value * (96/25.4);
}
(...)
当然“我怎么能确定DPI实际上是96?”没有解决,但可以封装,最终的结果足够接近预期的,为了我的目的。