2014-08-04 2 views
2

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

Единственное, что я мог придумать, это использовать 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, который должен быть прозрачным (она имеет определенную ширину и высоту). Я еще не установил свойства viewbox, так как это уже не работает. Я ожидал, что хотя бы какая-то часть холста уже будет отображаться внутри моего «borderTest» ... У кого-то есть идея моей проблемы или может указывать на какой-то код, где они похожи? Я уже много нашел в Интернете, но я не могу заставить эту работу работать.

+0

Это будет работать, только если UserControl не является дочерним элементом Canvas. – Clemens

+0

Хорошо, это может быть проблема, потому что это ребенок Холста. В чем причина этого (что он не может быть ребенком холста)? Есть ли другой способ сделать это? – alcon

ответ

1

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

Смежные вопросы