0

C# (WPF) で「理髪店のポール」グラデーション効果で線を作成しようとしています。以下のコードは機能しますが、線を移動するとグラデーションが歪んでしまいます。線オブジェクトを移動/回転させ、グラデーションの角度を線自体に対して固定したままにする方法はありますか?

// Create a linear gradient brush 
LinearGradientBrush redWhiteStripes = new LinearGradientBrush();
redWhiteStripes.StartPoint = new Point(0, 0);
redWhiteStripes.EndPoint = new Point(1, 1);
redWhiteStripes.SpreadMethod = GradientSpreadMethod.Reflect;

ScaleTransform s = new ScaleTransform();  
s.ScaleX = 0.125;
s.ScaleY = 0.125;

RotateTransform rot = new RotateTransform();
rot.Angle = 20;
rot.CenterX = 0.0625;
rot.CenterY = 0.0625;

TransformGroup tgroup = new TransformGroup();
tgroup.Children.Add(s);
tgroup.Children.Add(rot);

redWhiteStripes.RelativeTransform = tgroup;

// Create and add Gradient stops
GradientStop point1 = new GradientStop();
point1.Color = Colors.DarkRed;
point1.Offset = 0.0;
redWhiteStripes.GradientStops.Add(point1);

// Create and add Gradient stops
GradientStop point2 = new GradientStop();
point2.Color = Colors.DarkRed;
point2.Offset = 0.5;
redWhiteStripes.GradientStops.Add(point2);

// Create and add Gradient stops
GradientStop point3 = new GradientStop();
point3.Color = Colors.White;
point3.Offset = 0.5;
redWhiteStripes.GradientStops.Add(point3);

// Create and add Gradient stops
GradientStop point4 = new GradientStop();
point4.Color = Colors.White;
point4.Offset = 1.0;
redWhiteStripes.GradientStops.Add(point4);

Line l = new Line();
l.Stroke = redWhiteStripes;
l.StrokeThickness = 8;
4

0 に答える 0