C# 两点之间的矩形对角渐变笔刷
在一个图表中,我有一个C# 两点之间的矩形对角渐变笔刷,c#,wpf,xaml,charts,linear-gradients,C#,Wpf,Xaml,Charts,Linear Gradients,在一个图表中,我有一个起点和终点。这些点在它们和矩形之间创建一条线。沿着这条线,我希望矩形是绿色的,并且在拐角处变得透明 当然,渐变应该保留调整大小时的点。 不知怎的,我真的不知道怎么做,这真的让我发疯 谢谢你的帮助 编辑: 如果我使用@Sheridans解决方案,则将如下所示: <Rectangle> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndP
起点
和终点
。这些点
在它们和矩形之间创建一条线。沿着这条线,我希望矩形是绿色的,并且在拐角处变得透明
当然,渐变应该保留调整大小时的点。 不知怎的,我真的不知道怎么做,这真的让我发疯 谢谢你的帮助 编辑: 如果我使用@Sheridans解决方案,则将如下所示:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
不能使用精确坐标
点定义线性半径笔刷
。相反,我们在一个虚构的矩形中指定点
s,并且通常尺寸在0
和1
之间。从MSDN上的页面:
LinearGradientBrush使用线性渐变绘制区域。线性渐变定义沿直线的渐变。直线的端点由线性渐变的起点和终点特性定义。LinearGradientBrush笔刷沿此线绘制其渐变停止点
默认的线性渐变是对角的。默认情况下,线性渐变的起点为(0,0),即正在绘制的区域的左上角,终点为(1,1),即正在绘制的区域的右下角。结果渐变中的颜色沿对角线路径插值
您可以调整StartPoint
和EndPoint
属性,使渐变更适合您的目标控件,但是GradientStop
s应该如下所示:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
此代码将产生如下结果:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
不能使用精确坐标点定义线性半径笔刷
。相反,我们在一个虚构的矩形中指定点
s,并且通常尺寸在0
和1
之间。从MSDN上的页面:
LinearGradientBrush使用线性渐变绘制区域。线性渐变定义沿直线的渐变。直线的端点由线性渐变的起点和终点特性定义。LinearGradientBrush笔刷沿此线绘制其渐变停止点
默认的线性渐变是对角的。默认情况下,线性渐变的起点为(0,0),即正在绘制的区域的左上角,终点为(1,1),即正在绘制的区域的右下角。结果渐变中的颜色沿对角线路径插值
您可以调整StartPoint
和EndPoint
属性,使渐变更适合您的目标控件,但是GradientStop
s应该如下所示:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
此代码将产生如下结果:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
不能使用精确坐标点定义线性半径笔刷
。相反,我们在一个虚构的矩形中指定点
s,并且通常尺寸在0
和1
之间。从MSDN上的页面:
LinearGradientBrush使用线性渐变绘制区域。线性渐变定义沿直线的渐变。直线的端点由线性渐变的起点和终点特性定义。LinearGradientBrush笔刷沿此线绘制其渐变停止点
默认的线性渐变是对角的。默认情况下,线性渐变的起点为(0,0),即正在绘制的区域的左上角,终点为(1,1),即正在绘制的区域的右下角。结果渐变中的颜色沿对角线路径插值
您可以调整StartPoint
和EndPoint
属性,使渐变更适合您的目标控件,但是GradientStop
s应该如下所示:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
此代码将产生如下结果:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
不能使用精确坐标点定义线性半径笔刷
。相反,我们在一个虚构的矩形中指定点
s,并且通常尺寸在0
和1
之间。从MSDN上的页面:
LinearGradientBrush使用线性渐变绘制区域。线性渐变定义沿直线的渐变。直线的端点由线性渐变的起点和终点特性定义。LinearGradientBrush笔刷沿此线绘制其渐变停止点
默认的线性渐变是对角的。默认情况下,线性渐变的起点为(0,0),即正在绘制的区域的左上角,终点为(1,1),即正在绘制的区域的右下角。结果渐变中的颜色沿对角线路径插值
您可以调整StartPoint
和EndPoint
属性,使渐变更适合您的目标控件,但是GradientStop
s应该如下所示:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
此代码将产生如下结果:
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="0.5" Color="LightGreen" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
希望这能有所帮助
我使用BlurBitmapEffect编辑了lineseries模板,并添加了一条具有相同点的多段线,以便实现BlurBitmapEffect
例如
<Grid>
<Polyline Points="0 1 1 0" Stroke="#9FBD5F" StrokeThickness="200" Stretch="Fill">
<Polyline.BitmapEffect>
<BlurBitmapEffect Radius="100" KernelType="Box" />
</Polyline.BitmapEffect>
</Polyline>
<Polyline Points="0 1 1 0" Stroke="#2DB14D" StrokeThickness="5" Stretch="Fill"/>
</Grid>
xaml
<Window x:Class="WpfApplication8.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:Primitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit"
Title="Window1" Height="500" Width="500">
<Window.Resources>
<Style x:Key="LineSeriesStyle1" TargetType="{x:Type chartingToolkit:LineSeries}">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type chartingToolkit:LineSeries}">
<Canvas x:Name="PlotArea">
<!--You can use linergradient or visulbrush to give color to polyline -->
<!--or you can use additional polylines to achieve this affect-->
<Polyline Fill="Transparent" StrokeThickness="200" Points="{TemplateBinding Points}">
<Polyline.Stroke>
<SolidColorBrush Color="#9FBD5F"></SolidColorBrush>
</Polyline.Stroke>
<Polyline.BitmapEffect>
<BlurBitmapEffect Radius="100" KernelType="Box" />
</Polyline.BitmapEffect>
</Polyline>
<Polyline x:Name="polynine" Points="{TemplateBinding Points}" StrokeThickness="5" Stroke="#2DB14D"/>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<chartingToolkit:Chart x:Name="mcChart" >
<chartingToolkit:LineSeries DependentValuePath="Value" IsSelectionEnabled="True" IndependentValuePath="Key" ItemsSource="{Binding}" Style="{StaticResource LineSeriesStyle1}"/>
</chartingToolkit:Chart>