Frage

Ich begann zu spielen mit WPF und zeichnen wollten Farbe Rad auf einem Formular.

Zuerst habe ich versucht zu verwenden LinearGradientBrush auf ArcSegment wie diese:

<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>

Erfolglos, denn die Steigung war immer noch waagerecht.

Eine weitere Idee ist das, was ich beugen müssen irgendwie Linie nach der Anwendung des Gradienten.Aber ich kann nicht finden, ein passendes verwandeln.

Wenn es ist keine standard-Transformation ist es möglich, benutzerdefinierte verwandeln?Oder soll ich zeichnen, Farbe Rad, der durch die Pixel?

Irgendwelche Ideen, bitte.

War es hilfreich?

Lösung

Diese Bibliothek hat Pixel-Shadern, die Farbräder

zeichnen

Beispiel XAML:

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

Beachten Sie, dass die Ellipse eine Bürste auf Fill gesetzt haben müssen dafür zu arbeiten, kann jede Farbe.

Andere Tipps

Hier ist ein weiteres Beispiel von Silverlight: http://asyrovprog.host22.com/colorwheel.html . Der Quellcode befindet sich hier:. Timeline.codeplex.com unter BSD-Lizenz

Was du suchst ist ein Pfad Farbverlaufs Pinsel.Leider, es ist noch nicht verfügbar in WPF (aber es ist in GDI+).Vielleicht in einer zukünftigen version...

Ich habe eine Idee, wie Sie eine Ungefähre Farbe Rad.

Eine high-level Beschreibung wäre es mit linearen Gradienten (Rechtecke), die rotiert, und übersetzt, um ein regelmäßiges polygon, deren Dicke ist viel breiter als die gewünschte Breite der ring.Sie dann "Ausschneiden" eine ring Form von dieser und verwenden Sie es als Ihre Farbe Rad.

Eine Farbe Rad hat mehrere wichtige Farben (rot, grün, blau, gelb, etc).Sie müssen zuerst definieren Sie den Grad Messung von beliebigen base line.Zum Beispiel ist rot bei 0 Radiant blue ist pi Bogenmaß, etc.Definieren Sie auch eine innere und äußere radius für den ring.Mit trig, die Sie zu Fuß rund um den ring zeichnen Rechteck mit einem linearen Farbverlauf von der Farbe, die Sie beginnen, auf dem nächsten angrenzenden Farbe.Die Breite des Rechtecks muss größer sein als die Breite der ring (Sie werden sehen, warum später) und das Rechteck muss so gedreht werden, werden die Tangenten an den Kreis in Ihrer Mitte.

Sobald Sie fertig sind, haben Sie eine "Farbe " polygon" (ein Begriff, den ich gerade gemacht).Anschließend extrahieren Sie einen ring shape aus diesem polygon wie ein cookie-cutter-mit Teig.Es wäre mehr als ein Weg, dies zu tun.Einfaches zeichnen Sie mit einem gefüllten Kreis von der Mitte zu den inneren radius mit dem hintergrund loswerden auf dem mittleren Teil.Der äußere Teil würde schwierig werden.Ich weiß nicht, ob Sie dies tun können, in WPF, aber was würden Sie tun müssen, ist zu erzeugen eine Maske, die einen Kreis von der Mitte zum äußeren Rand des Rings.Es wäre ein weißer Kreis auf einem schwarzen hintergrund.Sie dann "UND" es mit dem Bild, um loszuwerden, die außerhalb des Polygons.

Nicht perfekt, aber es wird Aussehen, angemessenen vermute ich.Viele trig!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top