#c# #.net #wpf #visual-studio #wpf-controls
#c# #.net #wpf #visual-studio #wpf-элементы управления
Вопрос:
Я пытаюсь создать границу с отрицательным радиусом угла, например:
Я хочу, чтобы радиус был внутри. Возможно ли это с помощью встроенных функций или я должен нарисовать его с помощью пути?
Ответ №1:
Ну, я столкнулся с той же проблемой и попытался найти решение. И последнее, но не менее важное: я пришел к выводу, что это невозможно решить с помощью a border
.
Я сосредоточился на рисовании Border
с Path
CombinedGeometry
помощью функции и .
Если кто-то все еще ищет решение, как сделать перевернутые круглые углы, вот мое решение:
<Grid>
<Path Stroke="Black" Fill="White" StrokeThickness="10" Stretch="Fill">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="100,200 200,100"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="300,300" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
<Button Margin="10" Height="10" Width="10"/>
</Grid>
Вы можете изменить размер Rectangle
, изменив значения в RectangleGeometry Rect="100,200 200,100
и добавив в него любой другой элемент WPF .. в этом случае я добавил Button
.
Вот результат:
Ответ №2:
Вы могли бы использовать a Border
в Border
<Border Background="Black">
<Border Margin="10" Background="White" CornerRadius="20">
<!-- ... -->
</Border>
</Border>
Комментарии:
1. Это не совсем то, что я хочу, на картинке показана полная граница, как она должна выглядеть в конце.
2. Хорошо, это, кажется, не самое элегантное решение, но оно работает. Теперь я использую две границы. Они не входят друг в друга, но оба хорошо расположены в сетке.
3. Этот ответ не решает исходную проблему. @Tokk если вы решили исходную проблему, используя границу внутри границы, пожалуйста, поделитесь, как вы это сделали.