Как я могу указать дисплей?

Наконец-то я знаю, чего хочу. И описание в вопросе неясно: (

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

Поэтому я делаю свое окно Height и Width привязанным к

[ 110]

И добавьте это к самому внешнему Grid

        <Grid.LayoutTransform>
            <ScaleTransform CenterX="0" 
                            CenterY="0" 
                            ScaleX="{Binding ElementName=myMainWindow, Path=ScaleValue}" 
                            ScaleY="{Binding ElementName=myXMainWindow, Path=ScaleValue}"/>
        </Grid.LayoutTransform>

Коду

    public double ScaleValue
    {
        get
        {
            return ReSizeWidth / 1200;
            // 1200 is the design height
        }
    }

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

53
задан Yuan Wen 24 July 2016 в 23:26
поделиться

4 ответа

Принцип работы X такой же, как и любой сетевой программы. У вас есть сервер с некоторым описанием (в данном случае сервер X-дисплея), который работает на определенном компьютере, и у вас есть X-клиенты (например, firefox), которые пытаются подключиться к этому серверу для отображения своей информации.

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

Это позволяет вам делать такие чудесные вещи, как входить в свой ящик (в текстовом режиме) на полпути вокруг планеты, сообщать ему, что сервер отображения является окно, в котором вы сейчас находитесь, и, вуаля, окна внезапно начинают появляться локально.

Чтобы клиент мог взаимодействовать с пользователем, он должен знать, как найти сервер. Есть несколько способов сделать это. Многие клиенты позволяют указывать его с помощью параметра -display или - display :

xeyes -display paxbox1.paxco.com:0.0

Многие будут использовать переменную среды DISPLAY , если отображение не является специально данный. Вы можете установить эту переменную, как любую другую:

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)

Первая часть переменной DISPLAY - это просто адрес машины сервера дисплея. Он следует тому же правилу, что и любой другой IP-адрес; это может быть разрешаемое DNS-имя (включая localhost ) или определенный IP-адрес (например, 192.168.10.55).

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

Примером может быть:

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

Здесь у вас есть одна машина ( paxbox1.paxco.com ) с двумя серверами отображения. У первого четыре экрана, а у второго - два. Возможны следующие варианты:

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

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

68
ответ дан 7 November 2019 в 08:25
поделиться
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
18
ответ дан 7 November 2019 в 08:25
поделиться

Когда вы подключаетесь к другому компьютеру через SSH, вы можете включить X-Forwarding в SSH, чтобы X-окна перенаправлялись в зашифрованном виде через туннель SSH обратно на ваш компьютер. Вы можете включить перенаправление X, добавив -X в командную строку ssh или установив ForwardX11 yes в конфигурационном файле SSH.

Чтобы проверить, успешно ли настроено X-Forwarding (сервер может не разрешить это), просто попробуйте, если echo $ DISPLAY выведет что-то вроде localhost: 10.0 .

13
ответ дан 7 November 2019 в 08:25
поделиться

Попробуйте

export DISPLAY=localhost:0.0
12
ответ дан 7 November 2019 в 08:25
поделиться