我想创建一个渐变画笔编辑器,如MSVS 2013画笔编辑器。
我使用以下代码制作我的编辑器
<VisualBrush x:Key="MyBrush" TileMode="None">
<VisualBrush.Visual>
<Canvas Background="Black" Width="1" Height="1" >
<Rectangle Width="1" Height="1" >
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0" />
<GradientStop Color="{Binding ElementName=picker,Path=SelectedColour}" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFFFFFFF" Offset="0"/>
<GradientStop Color="#00FFFFFF" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
更新:
我意识到我应该将RGB转换为HSV。
答案 0 :(得分:2)
如果您阅读我发给您的文章,您将看到如何获得X(饱和度%)和Y(亮度%)。它们以百分比表示,您可以根据颜色框的宽度绘制该圆。因此,如果正方形为200x200像素且饱和度为45%,则绘制X = 90.如果亮度为60%,则绘制Y = 120。
XAML:
<Path Stroke="White" StrokeThickness="2" Fill="Red" >
<Path.Data>
<EllipseGeometry
Center="{Binding Path=CenterPoint}"
RadiusX="5"
RadiusY="10" />
</Path.Data>
</Path>
视图模型:
public Point CenterPoint
{
get { return new Point(Lightness, Saturation); }
}
您需要填写详细信息以将RGB颜色转换为HSL。