Как предотвратить растягивание содержимого Visual Brush - PullRequest
7 голосов
/ 01 октября 2009

В моем проекте я хочу отобразить небольшой логотип на стороне пользовательского элемента управления. Поскольку у меня нет холста, я подумал, что Visual Brush будет хорошей идеей для размещения логотипа на заднем плане.

<VisualBrush>
    <VisualBrush.Visual>
        <Rectangle Width="200" Height="200" Fill="Red" />
    </VisualBrush.Visual>                
</VisualBrush>

Но прямоугольник, которым я сейчас пользуюсь, - это не 200х200. Требуется полное доступное пространство. Это не то, что я хочу. Я также попробовал Viewbox и установил свойство stretch, но результат тот же, потому что в конце мне не нужен простой Rectangle, а холст со многими объектами path как дочерние. Viewbox поддерживает только одного дочернего элемента.

Это есть какой-нибудь способ обойти эту проблему?

Ответы [ 3 ]

10 голосов
/ 01 октября 2009

Вам необходимо установить свойства TileMode, Stretch, AlignmentX и AlignmentY на вашем VisualBrush:

<VisualBrush TileMode="None" Stretch="None" AlignmentX="Left" AlignmentY="Top">
    <VisualBrush.Visual>
        <Rectangle Height="200" Width="200" Fill="Red"></Rectangle> 
    </VisualBrush.Visual>
</VisualBrush>
0 голосов
/ 21 марта 2018

Для меня я установил следующий атрибут в VisualBrush, и теперь VisualBrush выглядит точно так же, как MediaElement:

Stretch="Uniform"
0 голосов
/ 01 октября 2009

Добавить сетку и установить вертикальное соединение вверху и горизонтальное выравнивание вправо Пример кода

  <VisualBrush x:Key="myVisual">
        <VisualBrush.Visual>
            <Grid>
                <Rectangle Height="200" Width="200" Fill="Red" HorizontalAlignment="Right"  VerticalAlignment="Top" ></Rectangle> 
            </Grid>
        </VisualBrush.Visual>
    </VisualBrush>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...