2013-11-26 3 views
0

Я работаю над настольным приложением WPF и имею графику в соответствии с конкретным разрешением экрана. Мне нужно масштабировать все поля на основе разрешения экрана. Как я могу это достичь?WPF Разрешение экрана

+1

проверить это http://stackoverflow.com/questions/1927540/how-to-get-the-size-of-the-current-screen-in-wpf или это – Akrem

+0

Ссылка ответит на проблему с несколькими экранами, и я не думаю, что на данный момент это «это» относится к вашему комментарию, а не к ссылке – androider

ответ

1

вы можете использовать:

System.Windows.SystemParameters.PrimaryScreenWidth; 
System.Windows.SystemParameters.PrimaryScreenHeight; 

сделать небольшой поиск :)

+1

Да, я это сделал, но как бы настроить поля. например: предназначен для 1366x768. Но этот запас будет установлен для всех экранов независимо от разрешения. Я ответил на это, если это правильный вопрос, и это имеет смысл – androider

+0

@yshooooo, в этом случае вам лучше искать Grid.RowDefinitions и ColumnDefinitions – Akrem

+0

Итак, вы хотите сказать, если текстовый блок имеет ширину 30, тогда я должен создать сетью и имеют значения ColumnDefinitions, определенные как 1 * и 2 *. Наверное, это была бы большая работа, и я не могу достичь точности для всех определений. Разве нет другого пути? – androider

0

Чтобы получить Screen Resolutions мы должны использовать значение коэффициента точек на дюйм системы, используйте код, приведенный ниже, как на this article (пожалуйста, прочитайте он в полной мере понять):

using System.Windows.Media; 


Window mainWindow = Application.Current.MainWindow; 
PresentationSource mainWindowPresentationSource = PresentationSource.FromVisual(mainWindow); 
Matrix m = mainWindowPresentationSource.CompositionTarget.TransformToDevice; 
double dpiWidthFactor = m.M11; 
double dpiHeightFactor = m.M22; 
double ScreenHeight = SystemParameters.PrimaryScreenHeight * dpiHeightFactor; //calculated correct value 
double ScreenWidth = SystemParameters.PrimaryScreenWidth * dpiWidthFactor; //calculated correct value 
+0

mainWindowPresentationSource всегда для меня - почему? –

+0

@MarkRichman Ваш объект MainWindow должен быть загружен перед вызовом этого кода, я думаю, что это причина, по которой вы получаете нуль. Попробуйте поместить свой код в событие Window.Loded или какое-либо другое событие, когда загрузка завершена. – VS1

Смежные вопросы