1、新建壹個 Window,添加壹個Grid
<Window?x:Class="WpfApplication1.MainWindow"xmlns="/winfx/2006/xaml/presentation"
xmlns:x="/winfx/2006/xaml">
<Grid>
<Grid?Name="panel"?Margin="50">
</Grid>
</Grid>
</Window>
2、添加類 FunnyBrush,這是我自己寫著玩的
public?class?FunnyBrush{
public?static?void?Draw(Panel?panel)
{
var?brush?=?new?RadialGradientBrush();
var?center?=?new?Point(panel.ActualWidth?/?2d,?panel.ActualHeight?/?2d);
brush.Center?=?center;
brush.GradientOrigin?=?center;
brush.RadiusX?=?center.X;
brush.RadiusY?=?center.Y;
brush.MappingMode?=?BrushMappingMode.Absolute;
Console.WriteLine(center);
var?stops?=?new?GradientStopCollection();
stops.Add(new?GradientStop(Colors.Yellow,?0d));
stops.Add(new?GradientStop(Colors.Red,?0.25d));
stops.Add(new?GradientStop(Colors.Blue,?0.75d));
stops.Add(new?GradientStop(Colors.LimeGreen,?1d));
brush.GradientStops?=?stops;
panel.Background?=?brush;
var?win?=?FindParent<Window>(panel)?as?FrameworkElement;
if?(win?==?null)?win?=?panel;
win.MouseMove?+=?(obj,?args)?=>
{
brush.GradientOrigin?=?args.GetPosition(panel);
};
win.SizeChanged?+=?(obj,?args)?=>
{
var?pt?=?new?Point(panel.ActualWidth?/?2d,?panel.ActualHeight?/?2d);
brush.Center?=?pt;
brush.RadiusX?=?pt.X;
brush.RadiusY?=?pt.Y;
};
}
//?這個方法來自
//?/fallincloud/article/details/6960255
public?static?T?FindParent<T>(DependencyObject?d)?where?T?:?DependencyObject
{
DependencyObject?parent?=?d;
while?(parent?!=?null)
{
parent?=?VisualTreeHelper.GetParent(parent);
if?(parent?!=?null?&&?(parent?is?T))
{
return?parent?as?T;
}
}
return?parent?as?T;
}?
}
3、在 Window_Loaded 事件中添加代碼
FunnyBrush.Draw(panel);