Table of Contents

Class RadialGradient

Namespace
Egami.Drawing
Assembly
Egami.Drawing.dll

A gradient in circles around a center: t is the distance from Center divided by Radius.

public sealed record RadialGradient : Gradient, ITextPaint, IEquatable<Paint>, IEquatable<Gradient>, IEquatable<RadialGradient>
Inheritance
RadialGradient
Implements
Inherited Members

Examples

using (RasterCanvas<Rgba8> canvas = raster.CreateCanvas())
{
    // Two colors along a line; past the ends the end colors repeat (TileMode.Clamp).
    canvas.FillRect(new RectF(0, 0, 200, 100), new LinearGradient(new Vector2(0, 0), new Vector2(200, 0), new RgbaF32(0.1f, 0.3f, 0.9f, 1), new RgbaF32(1, 0.8f, 0.2f, 1)));

    // Several stops, mixed in Oklab for even midpoints, repeating every 40 pixels.
    canvas.FillRect(new RectF(200, 0, 200, 100), new LinearGradient(
        new Vector2(200, 0),
        new Vector2(240, 0),
        new GradientStop(0, new Rgba8(230, 40, 60, 255)),
        new GradientStop(0.5f, new Rgba8(250, 210, 60, 255)),
        new GradientStop(1, new Rgba8(230, 40, 60, 255)))
    {
        Tile = TileMode.Repeat,
        Interpolation = GradientInterpolation.Oklab,
    });

    // A radial gradient stretched into an ellipse by its local matrix, and a sweep around a center.
    canvas.FillOval(new RectF(10, 110, 180, 80), new RadialGradient(Vector2.Zero, 1, new RgbaF32(1, 1, 1, 1), new RgbaF32(0, 0.4f, 0.2f, 1))
    {
        LocalMatrix = Matrix3x2.CreateScale(90, 40) * Matrix3x2.CreateTranslation(100, 150),
    });
    canvas.FillCircle(new Vector2(300, 150), 45, new SweepGradient(
        new Vector2(300, 150),
        new GradientStop(0, new Rgba8(255, 0, 0, 255)),
        new GradientStop(0.5f, new Rgba8(0, 0, 255, 255)),
        new GradientStop(1, new Rgba8(255, 0, 0, 255))));
}

Constructors

RadialGradient(Vector2, float, RgbaF32, RgbaF32)

Initializes a new instance of the RadialGradient class from one color at the center to another at the radius.

public RadialGradient(Vector2 center, float radius, RgbaF32 centerColor, RgbaF32 edgeColor)

Parameters

center Vector2

The center.

radius float

Where t is 1.

centerColor RgbaF32

The color at the center.

edgeColor RgbaF32

The color at the radius.

RadialGradient(Vector2, float, params ReadOnlySpan<GradientStop>)

Initializes a new instance of the RadialGradient class.

public RadialGradient(Vector2 center, float radius, params ReadOnlySpan<GradientStop> stops)

Parameters

center Vector2

The center, in paint coordinates.

radius float

Where t is 1; 0 gives a gradient with no extent.

stops ReadOnlySpan<GradientStop>

The stops; at least one.

Exceptions

ArgumentException

The center is not finite, or there are no stops.

ArgumentOutOfRangeException

radius is negative or not finite.

Properties

Center

Gets the center, in paint coordinates.

public Vector2 Center { get; init; }

Property Value

Vector2

Exceptions

ArgumentException

The point is not finite.

Radius

Gets the radius, where t is 1.

public float Radius { get; init; }

Property Value

float

Exceptions

ArgumentOutOfRangeException

The value is negative or not finite.