Наконец-то я знаю, чего хочу. И описание в вопросе неясно: (
Я хочу, чтобы размер приложения (размер окна, а также размер содержимого) корректировался в соответствии с разрешением экрана и масштабированием так, чтобы мое приложение занимало (почти) Один и тот же раздел экрана во время первого обеда. Никогда не становитесь слишком большими и не выходите за пределы экрана, ни слишком маленькими, чтобы их было видно.
Поэтому я делаю свое окно Height
и Width
привязанным к
И добавьте это к самому внешнему 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
}
}
Хотя это работает, но я думаю, что это может вызвать некоторые плохие эффекты, такие как размытие или псевдонимы. Я думаю, что должна быть встроенная функция или что-то для этого.
Принцип работы 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
в зависимости от того, где вы хотите, чтобы ваши фактические окна отображались и какие устройства ввода вы хотите использовать.
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
Когда вы подключаетесь к другому компьютеру через SSH, вы можете включить X-Forwarding в SSH, чтобы X-окна перенаправлялись в зашифрованном виде через туннель SSH обратно на ваш компьютер. Вы можете включить перенаправление X, добавив -X
в командную строку ssh или установив ForwardX11 yes
в конфигурационном файле SSH.
Чтобы проверить, успешно ли настроено X-Forwarding (сервер может не разрешить это), просто попробуйте, если echo $ DISPLAY
выведет что-то вроде localhost: 10.0
.