System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width在wpf中的等效值是多少

时间:2012-07-30 05:26:32

标签: wpf

我正在尝试将Windows应用程序转换为wpf应用程序,一切都很好,但此时我还是Struck将波纹管声明转换为wpf的代码。

这些是Windows声明,

Dim screenwidth As String = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width

Dim screenheight As String = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height

我用谷歌搜索找到这些声明的等效类属性,我得到了一些东西,但是那些已经存在但是在我尝试使用它们的时候没有工作

PointToScreen(新点(0,0))” 他们是:

如果我在我的代码中使用这些:

Dim screenwidth As String = System.Windows.SystemParameters.VirtualScreenWidth Dim screenheight As String = System.Windows.SystemParameters.VirtualScreenHeight “(OR)

Dim screenwidth As String = System.Windows.SystemParameters.PrimaryScreenWidth Dim screenheight As String = System.Windows.SystemParameters.PrimaryScreenHeight

       With MyPanel
            .PointToScreen(New Point(SystemParameters.VirtualScreenWidth, 0)) ' Getting Exception in this line               
            .Height = (80 / 1080) * screenheight
            .Width = screenwidth                
            .Background = New SolidColorBrush(Colors.Transparent)
        End With

我将异常视为无效操作异常 “视觉效果与PresentationSource无关。”

我已经尝试过这篇文章http://social.msdn.microsoft.com/Forums/en/wpf/thread/f3c982a1-ca16-4821-bf08-f6dd8ff8d829 ,但我想仅使用PointToScreen进行试用。

我该如何解决这个问题???? 请帮帮我

2 个答案:

答案 0 :(得分:1)

嗨试试这个以获得屏幕的宽度和高度。

double width=System.Windows.SystemParameters.PrimaryScreenWidth;
double height = System.Windows.SystemParameters.PrimaryScreenHeight;

异常是因为您在呈现之前指向Mypanel。这样做

if (MyPanel.IsVisible)
        { 
            MyPanel
            .PointToScreen(New Point(SystemParameters.PrimaryScreenWidth, 0)) ' Getting Exception in this line               
            .Height = (80 / 1080) * screenheight
            .Width = screenwidth                
            .Background = New SolidColorBrush(Colors.Transparent)
        }

我希望这会有所帮助。

答案 1 :(得分:0)

这个怎么样:

Screen.PrimaryScreen.WorkingArea.Height

Screen.PrimaryScreen.WorkingArea.Width

如果你想考虑DPI设置,我使用它(_windowToControl是你应用程序中的一个窗口):

    public double ScreenPixelHeight
    {
        get
        {
            PresentationSource source = PresentationSource.FromVisual(_windowToControl);
            if (source != null)
                return Screen.PrimaryScreen.WorkingArea.Height * source.CompositionTarget.TransformFromDevice.M11;
            else
                return 0;
        }
    }
    public double ScreenPixelWidth
    {
        get
        {
            PresentationSource source = PresentationSource.FromVisual(_windowToControl);
            if (source != null)
                return Screen.PrimaryScreen.WorkingArea.Width * source.CompositionTarget.TransformFromDevice.M11;
            else
                return 0;
        }
    }