2010-04-29 4 views
4

Что подразумевается под бесплатной заявкой на разрешение. Поскольку я обсуждал это со многими из моих друзей, и они говорят, что разрешение не означает, что когда-либо разрешение пользователя хочет видеть приложение, оно должно отрегулировать его положение, разрешение монитора или сказать 100 на 100, что такое разрешение?Разрешение Бесплатное приложение

+1

@Kishore, Что так хорошо в этом вопросе, я считаю, основы всегда есть в MSDN и вводного документации, но я чувствую, каждый не хочет читать основы и приходить на SO и заполнять ненужные вопросы. –

+1

Я знаю, что основы основаны на MSDN, но я хочу знать, когда кто-то говорит, что разрешение бесплатное, что это значит, это означает разрешение экрана или разрешение resizeble формы, которое является изменением с помощью мыши? –

ответ

0

Я думаю, это означает, что пропорции должны быть одинаковыми, с разными разрешениями. Это не означает, что приложение изменит размер своих окон внутри, чтобы приспособиться к новому разрешению. Но это не универсально.

Еще одна важная вещь, о которой стоит упомянуть, - это контекст, на котором это происходит. Например, существуют различные ожидания для веб-приложения , что может изменить формат или размер страницы в зависимости от разрешения. Видеоигры, которые могут отображать вещи very differently в зависимости от разрешения экрана и аспекта. И регулярные оконные приложения (GUI), о которых я уже говорил.

+0

его разрешение экрана или пользователь определяют средний пользовательский размер окна? –

+0

Извините, вы можете повторить это? –

+0

Я имею в виду, когда кто-то говорит, что разрешение бесплатное, что это значит, это означает разрешение экрана или разрешение resizeble формы, которое изменяется пользователем с помощью мыши? –

1

Вы можете использовать WPF для вашего приложения. Каждый элемент управления, который вы создаете в форме, будет иметь разные разрешения экрана.

Одним из основных заявленных преимуществ WPF является «независимость резолюции». Часто это преимущество описывается в относительно неопределенных выражениях, заставляя людей полагать, что это означает, что одно и то же окно WPF будет отображаться на любом мониторе с одинаковым размером независимо от разрешения, на котором установлен этот монитор.

2

WPF использует независимые от устройства координаты, что означает, что приложения масштабируются правильно и равномерно при разных настройках DPI.

Еще одна очень полезная функция WPF - это ViewBox, которая может использоваться для создания масштабируемого приложения. Попробуйте следующее.

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="300" Height="300"> 
    <Viewbox Stretch="Uniform"> 
     <Grid Width="300" Height="300"> 
      <Button Content="Button" Margin="16,8,0,0" 
        Width="104" Height="32" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" /> 
      <CheckBox Content="CheckBox" Margin="136,8,0,0" 
         Width="112" Height="24" 
         HorizontalAlignment="Left" VerticalAlignment="Top" /> 
     </Grid> 
    </Viewbox> 
</Window> 

Этот простой пример - небольшая причина появления заголовка окна и границы, но вы получаете идею. Когда это окно изменяется, содержимое масштабируется равномерно, поэтому оно выглядит одинаково при любом разрешении.

3

В идеале приложения будут использовать более высокую плотность пикселей, чтобы показать больше деталей. Например, монитор с высоким разрешением может отображать значки на панели инструментов одинакового размера, но использовать дополнительные пиксели для визуализации более четкой графики. Таким образом, вы можете сохранить одну и ту же базовую компоновку, но предложить более ясную и детальную информацию. По разным причинам это решение в прошлом не было возможным. Хотя вы можете изменить размер графического содержимого, нарисованного с помощью GDI/GDI +, User32 (который генерирует визуальные эффекты для общих элементов управления) не поддерживает истинное масштабирование.

WPF не страдает этой проблемой, поскольку он отображает все элементы пользовательского интерфейса, от простых форм до общих элементов управления, таких как кнопки. В результате, если вы создадите на мониторе компьютера кнопку шириной 1 дюйм, она может оставаться на расстоянии 1 дюйма на мониторе с высоким разрешением. WPF будет просто отображать ее более подробно и с большим количеством пикселей.

WPF основывает свое масштабирование на настройке DPI системы, а не на DPI вашего физического устройства отображения. Он использует настройку DPI системы при вычислении размеров.

WPF Единицы

окно WPF, и все элементы внутри него измеряются с помощью блоков аппаратно-независимым. Единый независимый от устройства блок определяется как 1/96 дюйма. Чтобы понять, что это означает на практике, вам нужно рассмотреть пример.

Представьте, что вы создаете маленькую кнопку в WPF размером 96 на 96 единиц. Если вы используете стандартную настройку Windows DPI (96 точек на дюйм), каждый независимый от устройства блок соответствует одному реальному физическому пикселю. Это потому, что WPF использует этот расчет:

[Physical Unit Size] = [Device-Independent Unit Size] × [System DPI] 

       = 1/96 inch × 96 dpi 

       = 1 pixel 

По существу, WPF предполагает, что он занимает 96 пикселей, чтобы сделать один дюйм, потому что Windows, сообщает ему, что через настройки системы DPI. Однако реальность зависит от вашего устройства отображения.

Например, рассмотрите 20-дюймовый ЖК-монитор с максимальным разрешением 1600 на 1200 пикселей. Использование тира Пифагора, можно вычислить плотность пикселей для этого монитора, как показано здесь:

[Screen DPI] = ((Sqroot of)(1600*1600)+(1200*1200))pixels/19 inches = 100dpi 

В этом случае плотность пикселей работает на 100 точек на дюйм, что немного выше, чем предполагается для Windows. В результате на этом мониторе 96-на-96-пиксельная кнопка будет немного меньше 1 дюйма.

С другой стороны, рассмотрите 15-дюймовый ЖК-монитор с разрешением 1024 на 768. Здесь плотность пикселей падает примерно до 85 точек на дюйм, поэтому кнопка 96-на-96 пикселей немного больше 1 дюйма ,

В обоих случаях, если вы уменьшаете размер экрана (например, переключаясь на разрешение 800 на 600), кнопка (и каждый другой элемент экрана) будет казаться пропорционально большей. Это связано с тем, что установка DPI системы остается равной 96 dpi. Другими словами, Windows продолжает предполагать, что для создания дюйма требуется 96 пикселей, хотя при более низком разрешении требуется гораздо меньше пикселей.

Ссылка: Pro WPF в C# 2008: Windows Presentation Foundation с .NET 3.5, второе издание

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