Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两点之间的矩形对角渐变笔刷_C#_Wpf_Xaml_Charts_Linear Gradients - Fatal编程技术网

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>