Sie können Ihr Bild auch mit einem halbtransparenten Element Path
überlagern, das ein CombinedGeometry
verwendet, das ein sehr großes äußeres Rechteck mit einem inneren Rechteck kombiniert:
Sie würden nun die Eigenschaft Rect
des Elements transparentRect
nach Bedarf programmatisch anpassen.
Sie können eine Kombination aus OpacityMask und DrawingBrush verwenden:
XAML:
%Vor%Code-Behind:
%Vor%SelectedArea ist ein Rect.
Dies ist eine Variation der Lösung mit OpacityMask. Anstatt es im Code zu tun, geschieht dies in XAML. Außerdem kehrt es die Logik um: Anstatt 4 Rahmenrechtecke zu zeichnen, zieht es 2 Rechtecke übereinander. Schließlich ist die wichtige Eigenschaft dieser Lösung, dass die Größe des zentralen transparenten Rechtecks relativ zur Bildgröße ist (und nicht in absoluten Pixeln). Sie müssen nicht die tatsächliche Bildgröße oder wie es gestreckt / positioniert ist (besonders wichtig für Stretch="Uniform"). Hier habe ich die Bildgröße (maskRect) als 1,1 angegeben und verwendete Bruchzahlen als relative Maskengröße und Position (transpRect). Sie können auch die Bildgröße als 100,100 angeben und Prozentwerte für die Maske verwenden (oder sogar die tatsächlichen Pixelwerte verwenden).
%Vor%Tags und Links wpf .net c# rectangles fill