2010-04-24 12 views
14

Próbuję utworzyć okno WPF, które obejmie cały obszar roboczy Desktop. W WinForms zrobię to, zdobywając Unię wszystkich granic w System.Windows.Forms.Screen.AllScreens.Czy istnieje WPF równoważne z System.Windows.Forms.Screen?

Czy istnieje równoważny typ lub inny mechanizm pozwalający uzyskać granice całego pulpitu w WPF lub czy muszę używać typu WinForm?

Odpowiedz

9

Właściwości właściwości SystemParameters.VirtualScreen * (góra, lewo, wysokość i szerokość). http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.virtualscreenheight(v=VS.100).aspx

Nie należy używać interfejsu API WinForm, ponieważ nie uwzględnia faktu, że jednostki pomiaru WPF nie są pikselami. Natrafiłem niedawno na tę kwestię, ponieważ tracę wzrok i ustawiłem mój monitor na wyższą rozdzielczość. Baza kodu, nad którą pracowałem używała ustawień WinForm, a interfejs był większy niż mój ekran.

Jeśli zamierzasz korzystać z interfejsu API WinForm. Zobacz ten wpis na blogu pod adresem calculating the DPI factor.

4

Wystarczy użyć WinForm. Nie sądzę, że istnieje bezpośredni odpowiednik WPF.

+1

Niewłaściwy istnieją WPF Równoważniki. Zobacz moją odpowiedź. –

+9

Och? Czy WPF może powiedzieć nam o każdym monitorze indywidualnie? Czy WPF może wskazać, na którym ekranie znajduje się okno (np. Screen.FromControl()?) – Qwertie

+3

Co zrobić, jeśli masz kilka monitorów o innym rozmiarze? Czy istnieje odpowiednik do obsługi tego? i jak Qwertie wspomniała, który to ekran? – Marek

1

Można wypróbować SystemParameters.VirtualScreenWidth i powiązane parametry. To może nie zapewniać tak dobrego rezultatu, jak kontynuowanie interfejsu API WinForm.

Jedyną wadą, jaką widzę w typie WinForms, jest dodatkowa zależność i większy zestaw roboczy związany z tym.

Powiązane problemy