Разрешение Бесплатное приложение - PullRequest
4 голосов
/ 29 апреля 2010

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

Ответы [ 5 ]

3 голосов
/ 29 апреля 2010

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

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

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

WPF Units

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

Представьте, что вы создаете маленькую кнопку в WPF размером 96 на 96 единиц. Если вы используете стандартную настройку 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 dpi, что немного выше, чем предполагает 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, второе издание

2 голосов
/ 29 апреля 2010

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>

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

1 голос
/ 29 апреля 2010

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

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

0 голосов
/ 29 апреля 2010
0 голосов
/ 29 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...