Füllen Sie die Außenseite eines Rechtecks

8

Ich möchte ein Rechteck in WPF (nach Code) zeichnen und das Äußere davon füllen.

Hier ist ein Beispiel:

Die Außenseite des Rechtecks ​​ist grau (mit geringer Deckkraft) und die Füllung des Rechtecks ​​ist transparent.

    
Ben 18.07.2013, 10:28
quelle

4 Antworten

5

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:

%Vor%

Sie würden nun die Eigenschaft Rect des Elements transparentRect nach Bedarf programmatisch anpassen.

    
Clemens 18.07.2013, 11:14
quelle
2

Sie können die Eigenschaft UIElement.Clip verwenden:

%Vor%     
Athari 18.07.2013 10:50
quelle
2

Sie können eine Kombination aus OpacityMask und DrawingBrush verwenden:

XAML:

%Vor%

Code-Behind:

%Vor%

SelectedArea ist ein Rect.

    
Daniel Sklenitzka 18.07.2013 10:41
quelle
1

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%     
Andrzej Turski 16.02.2018 18:21
quelle

Tags und Links