2

WPF/XAML のさまざまな UserControls で構成されるキャンバスがあります。これらのコントロールの 1 つに、背後の要素が見えるように透明にする必要がある領域があります。ただし、このコントロールの構造が複雑なため、背景を透明などに設定することはできません。そのユーザーコントロールには、その背後に移動して透明にできない別の要素があるためです。だから私は、その背後にまだ何か他のものがあるにもかかわらず、透明に見える領域を持ちたいと思っています.

私が思いついた唯一のことは、VisualBrush を使用して、キャンバスのその領域を、透明であるかのように見える必要がある領域の上に正確に表示することです。コンテンツがその部分の背後にあるコンテンツとまったく同じになるようにビューボックスを正確に調整する必要があるため、XAML ではなく WPF でこれを実行したかったのです。ただし、これはまったく機能していないようです。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」内に表示されていることを期待していました...誰かが私の問題について考えているか、似たようなことをするコードを教えてくれますか? 私はすでにインターネットでたくさん見つけましたが、これを機能させることができません。

4

1 に答える 1

1

わかりました、別の方法でこれを解決しました。ユーザーコントロールのキャンバスを透明にする必要がある領域にクリッピング領域を追加したため、そこには何も表示されず、背景のキャンバスが表示されます。とにかくありがとう!

于 2014-08-05T14:29:35.987 に答える