旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【WPF】Ellipseの外側と内側に異なる透明度を指定する

WPFのEllipseの外側(Stroke)と内側(Fill)に異なる透明度を適用する方法をメモします。具体的には内側だけある透明度を適用したかったのですが、EllipseのOpacityを設定すると、StrokeもFillも透明になってしまいます。この問題はStrokeとFillに異なるBrushを割り当てることで解決できます。

var brushWithOpacity = new SolidColorBrush(Colors.Black);
brushWithOpacity.Opacity = 0.2;
var ellipse = new Ellipse()
{
    Width = 30.0,
    Height = 30.0,
    StrokeThickness = 5.0,
    Stroke = Brushes.Black,
    Fill = brushWithOpacity
};
MainCanvas.Children.Add(ellipse);

f:id:ni4muraano:20170309223201j:plain

参考サイト:c# - WPF shape different opacity for stroke and fill - Stack Overflow