Laden...

Ringförmigen Farbverlauf zeichnen (DrawArc und PathGradientBrush)?

Erstellt von SkySurfer vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.647 Views
S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren
Ringförmigen Farbverlauf zeichnen (DrawArc und PathGradientBrush)?

Hi,

ich versuch gerade eine Prozentanzeige in Form eines Rings zu machen...
einfarbig soweit auch kein Problem.


g.DrawArc(_pen, _drawingRect, _startAngle, _percentAngle);

Jedoch hätte ich den Ring gerne mit einem Gradientenfarbverlauf versehen.
Also irgendwie in der Art:


GraphicsPath path = new GraphicsPath();
path.AddArc(_drawingRect, _startAngle, _percentAngle);
path.FillMode = FillMode.Winding;

PathGradientBrush brush = new PathGradientBrush(path);
brush.WrapMode = WrapMode.Clamp;
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Blue, Color.Aquamarine };
cb.Positions = new float[] { 0.0f, 1.0f };
brush.InterpolationColors = cb;
_pen = new Pen(brush, _thicknes);

Jedoch hätte ich gern das der Farbverlauf dem Arc folgt und nicht zur Mitte hin verläuft.
Gibt es da eine Möglichkeit?

Besten Dank im voraus

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo SkySurfer,

soweit ich das überblicke, kannst du mittels der Möglichkeiten im Framework wohl nur den Verlauf des Rings durch viele kleine GradientStops interpolieren und auch das erst ab .NET 3.0.

herbivore

I
1.739 Beiträge seit 2005
vor 14 Jahren

Der Verlauf des Rings lässt sich seit Framework 1.0(besser 1.1 wg. Kompatibilität) einstellen. - Natürlich nur GDI+.
@skysurfer:
könntest du das genauer ausführen mit dem Verlaufen?

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo ikaros,

Der Verlauf des Rings lässt sich seit Framework 1.0(besser 1.1 wg. Kompatibilität) einstellen.

wie?

herbivore

S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren

naja also im prinzip soll der verlauf dem kurvenpfad folgen..

das wie würde mich jetzt auch interessieren 😉

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo SkySurfer,

für .NET 3.0 habe ich ja schon eine Lösung angegeben. Und was .NET 1.1 anbelangt, beinhaltet mein "wie?" deutliche Zweifel, dass dort schon eine solche Lösung existiert.

Das einzige was ich mir vorstellen kann, ist, dass ikaros meint, dass man auch schon in früh(er)en Frameworkversionen auf Win32-GDI-API-Funktionen zurückgreifen könnte.

herbivore

S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren

Also mein jetziger Ansatz wäre es einen Brush abzuleiten und den Farbverlauf selbst zu berechnen als ähnlich wie man dann dann bei 3.0 machen würde über kleine Integrationsschrittweite ..

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
I
1.739 Beiträge seit 2005
vor 14 Jahren

Mit dem Pathgradientbrush ist es möglich einen Farbverlauf um die Mitte des Kreises zu gestalten. Es gibt jedoch nur eine Centerfarbe. der Verlauf ist also ein verlauf von der Centerfarbe zu dem äusseren Farbverlauf. Die Darstellung ist damit ähnlich zum Colorpicker in Paint.net.
Zu beachten sit das der Brush intern Kurven in Liniensegmente umwandelt. Die Surroundcolors müssen entsprechend dem gewünschten Verlaufs angepasst werden.