WPF在形状旋转时保持LinearGradientBrush旋转

时间:2015-12-10 10:15:08

标签: c# wpf lineargradientbrush

我正在努力创建一条带有理发店杆的线路' 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;

0 个答案:

没有答案