我开始玩WPF并希望在表格上绘制色轮

起初我尝试在ArcSegment上使用LinearGradientBrush,如下所示:

<Path StrokeThickness="35" Height="150" Width="150">
    <Path.Stroke>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
            <GradientStop Color="Red" Offset="0.15" />
            <GradientStop Color="Orange" Offset="0.2" />
            <GradientStop Color="Yellow" Offset="0.35" />
            <GradientStop Color="Green" Offset="0.5" />
            <GradientStop Color="Blue" Offset="0.65" />
            <GradientStop Color="Indigo" Offset="0.75" />
            <GradientStop Color="Violet" Offset="0.9" />
        </LinearGradientBrush>
    </Path.Stroke>
    <Path.Data>
        <PathGeometry >
            <PathFigure IsClosed="True" StartPoint="25,70">
                <ArcSegment Point="25,71" IsLargeArc="True"
                    Size="50,50" SweepDirection="Clockwise" />
            </PathFigure>
        </PathGeometry>
    </Path.Data>
</Path>

不成功,因为渐变仍然是水平的。

另一个想法是在应用渐变后我必须以某种方式弯曲线条。但我无法找到适当的变革。

如果没有标准变换,是否可以进行自定义变换?或者我应该按像素绘制色轮?

请提出任何想法。

有帮助吗?

解决方案

此库具有绘制色轮的像素着色器

示例xaml:

<Ellipse Width="300"
         Height="300"
         Fill="White">
    <Ellipse.Effect>
        <effects:HsvWheelEffect />
    </Ellipse.Effect>
</Ellipse>

请注意,椭圆必须在 Fill 上设置画笔才能使其正常工作,可以是任何颜色。

其他提示

以下是silverlight的另一个例子: http://asyrovprog.host22.com/colorwheel.html 。 源代码位于:bsd license下的timeline.codeplex.com。

您正在寻找的是路径渐变画笔。遗憾的是,WPF尚未提供(但它在GDI +中)。也许在未来的版本......

我确实知道如何获得近似的色轮。

对它的高级描述将使用旋转和平移的线性渐变(矩形),以形成厚度比所需环宽宽得多的正多边形。然后你“切出”由此形成的环形,并将其用作色轮。

色轮有几种主要颜色(红色,绿色,蓝色,黄色等)。您首先需要从某个任意基线定义度数测量。例如,红色为0弧度,蓝色为π弧度等。您还可以定义环的内半径和外半径。使用trig,您可以使用从开始颜色到下一个相邻颜色的线性渐变在环形绘制矩形中走动。矩形的宽度必须大于环的宽度(稍后您会看到原因),并且矩形需要旋转到与其中点的圆相切。

完成后,您将拥有一个“彩色多边形”。 (我刚刚编造的一个术语)。然后,您可以从这个多边形中提取一个环状形状,就像饼干切割器一样。这样做的方法不止一种。简单地从中心到内半径绘制一个填充圆圈,背景将在中间部分消失。外部部分会更加困难。我不知道你是否可以在WPF中做到这一点,但你需要做的是生成一个从环的中心到外边缘的圆形掩模。它将是黑色背景上的白色圆圈。然后你“和”它与图像摆脱了多边形的外部。

不完美,但我怀疑它看起来合情合理。很多三角!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top