VisualBrush WPF отображение

У меня есть холст, который состоит из различных пользовательских элементов управления в WPF/XAML. В одном из этих элементов управления у меня есть область, которая должна быть прозрачной, чтобы элементы позади нее были видны. Однако из-за сложной структуры этого элемента управления я не могу просто установить прозрачный фон или что-то еще, потому что в этом пользовательском контроле есть другой элемент, который, скажем, движется за ним и не может быть прозрачным. Поэтому я хочу иметь регион, который кажется прозрачным, хотя есть еще что-то за этим.

Единственное, что я могу придумать, - это использовать VisualBrush и отображать именно ту область моего холста поверх области, которая должна выглядеть, если бы она была прозрачной. Я хотел сделать это в WPF, а не в XAML, так как мне нужно точно настроить окно просмотра так, чтобы содержимое точно соответствовало содержимому этой части. Тем не менее, это, похоже, не работает вообще. Вот код WPF:

Rectangle rect = new Rectangle();
rect.HorizontalAlignment = HorizontalAlignment.Stretch;
rect.VerticalAlignment = VerticalAlignment.Stretch;

VisualBrush VisualBrush1 = new VisualBrush();
VisualBrush1.Visual = MainCanvas;
VisualBrush1.Stretch = Stretch.None;
rect.Fill = VisualBrush1;

RectTest.Child = rect;

BorderTest - это граница, которую я определил в коде xaml, который должен быть прозрачным (он имеет определенную ширину и высоту). Я еще не установил свойства окна просмотра, так как это уже не работает. Я ожидал, что, по крайней мере, некоторая часть холста уже будет отображаться внутри моего "borderTest"... Кто-то имеет представление о моей проблеме или может указать мне код, где они делают подобные вещи? Я уже нашел много в Интернете, но я не могу заставить эту вещь работать.

1 ответ

Хорошо, я решил это по-другому: я добавил область обрезки поверх моего холста в моем пользовательском контроле в области, где он должен быть прозрачным, чтобы ничего не отображалось там, и, таким образом, холст на заднем плане становится видимым. Спасибо, в любом случае!

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