WPF позволяет использовать подклассы Transform
< / a> для масштабирования ( ScaleTransform
< / a>), повернуть ( RotateTransform
), перекос (SkewTransform
) и т.д. любой FrameworkElement
.
Но я не вижу, как обрезать некоторые FrameworkElement
< / a> используя эти. Есть ли способ обрезать, скажем, Label
шириной 30 пикселей, чтобы он вел себя так, как если бы его ширина была 20 пикселей?
Точнее: я хочу сделать это перед выкладкой, чтобы Label
располагался так, как если бы его ширина была 20. Но я хочу, чтобы он был отрисован полностью, чтобы последние 10 пикселей тоже были отрисованы ( возможно перекрытие других элементов). Как я могу это сделать ?
Зачем мне это нужно? Я хочу сделать ответ HB на мой вопрос Создайте редактор гитарных аккордов в WPF для работы с кернинг.
2 ответа
Используйте отрицательный знак Margin
на ярлыке, например Margin="0,0,-10,0"
делает ярлык на 10 пикселей короче справа по макету. (Чтобы предотвратить перекрытие, поместите его в контейнер и установите ClipToBounds="True"
)
Моя проблема с решением H.B. заключалась в том, что я не могу привязать только верхнее поле.
Я использую XAML, как это, чтобы создать своего рода круглую полосу выполнения (эллипс, который обрезается вверху):
<Canvas Name="ProgressIndicator" Width="120" Height="{Binding ProgressIndicatorHeight}" ClipToBounds="True">
<Ellipse Width="120" Canvas.Bottom="0" Height="120" Fill="#FF7090B7"/>
</Canvas>
Когда я изменяю высоту холста, верхняя часть эллипса обрезается (потому что она выравнивается по нижней части холста). если я выровнял его по верхнему краю (по умолчанию), он будет обрезан снизу.
Я использую эту конструкцию внутри круглого значка, чтобы заполнять его пропорционально прогрессу.
Похожие вопросы
Связанные вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.
5
пикселей короче для системы макета, но все же полностью отобразить его? Вместо установки поля следующего элементаMargin="-5,0,0,0"
? Потому что так работают с кернингом другие редакторы (например,RichTextBox
). Я не понимаю, почему они не используют для этого что-то вроде поля, но может возникнуть проблема при выделении текста и так далее (когда элементы перекрывают друг друга).Margin="0,0,-5,0"
в предыдущем элементе, он должен быть короче и все равно будет отображаться, если вы не установите отсечение.