Каким образом кисть, которая используется для BackgroundProperty элемента управления WPF, может получить поле?

В WPF у меня есть TextBox с BackgroundProperty установить пользовательскую кисть. Я хочу дать этой кисти некоторый визуальный буфер от границы TextBox, Кисть это GlyphRunBrush который действует так же, как ImageBrush, но в качестве источника кисти используется растеризованный глиф.

Как я могу это сделать?

Пример:

1 ответ

Решение

Один из способов - применить преобразование к самой кисти, например, так:

<TextBox>
    <TextBox.Background>
        <ImageBrush ImageSource="/MyApp;component/Search.ico"
                    AlignmentX="Right" Stretch="Uniform">
            <ImageBrush.Transform>
                <TransformGroup>
                    <TranslateTransform X="-5"/>
                </TransformGroup>
            </ImageBrush.Transform>
        </ImageBrush>
    </TextBox.Background>
</TextBox>

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

Другие вопросы по тегам