SKPaint Clase

Definición

Contiene la información de estilo y color sobre cómo dibujar geometrías, texto y mapas de bits.

public class SKPaint : SkiaSharp.SKObject
Herencia

Ejemplos

Ejemplo sencillo

En el ejemplo siguiente se muestran tres pinturas diferentes, cada una configurada para dibujar en un estilo diferente. El autor de la llamada puede mezclar estas pinturas libremente, ya sea usándolas tal como está o modificandolas a medida que avanza el dibujo.

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    using var font = new SKFont { Size = 64.0f };
    using var scaledFont = new SKFont { Size = 64.0f, ScaleX = 1.5f };

    using var paint1 = new SKPaint {
        IsAntialias = true,
        Color = new SKColor(255, 0, 0),
        Style = SKPaintStyle.Fill
    };

    using var paint2 = new SKPaint {
        IsAntialias = true,
        Color = new SKColor(0, 136, 0),
        Style = SKPaintStyle.Stroke,
        StrokeWidth = 3
    };

    using var paint3 = new SKPaint {
        IsAntialias = true,
        Color = new SKColor(136, 136, 136)
    };

    var text = "Skia!";
    canvas.DrawText(text, 20.0f, 64.0f, SKTextAlign.Left, font, paint1);
    canvas.DrawText(text, 20.0f, 144.0f, SKTextAlign.Left, font, paint2);
    canvas.DrawText(text, 20.0f, 224.0f, SKTextAlign.Left, scaledFont, paint3);
}

El ejemplo anterior genera lo siguiente:

SKPaint y Text

Ejemplo de efectos

En el ejemplo siguiente se dibuja mediante un degradado en lugar de un solo color. Para ello, se asigna un SKShader elemento a la pintura. Cualquier elemento dibujado con esa pintura se dibujará con el degradado especificado en la llamada a SKShader.CreateLinearGradient.

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create a gradient
    var colors = new[] {
        SKColors.Blue,
        SKColors.Yellow
    };
    var shader = SKShader.CreateLinearGradient(
        new SKPoint(0.0f, 0.0f),
        new SKPoint(256.0f, 256.0f),
        colors,
        null,
        SKShaderTileMode.Clamp);

    // assign the gradient to the paint
    var paint = new SKPaint {
        Shader = shader
    };

    canvas.DrawPaint(paint);
}

El ejemplo anterior genera lo siguiente:

SKPaint y SKShader

Comentarios

Cada vez que dibuje algo en SkiaSharp, y quiera especificar qué color es, o cómo se combina con el fondo, o qué estilo o fuente para dibujarlo, se especifican esos atributos en una pintura.

A diferencia de SKCanvas, un objeto de pintura no mantiene una pila interna de estado. Es decir, no hay ningún guardado o restauración en una pintura. Sin embargo, los objetos de pintura son relativamente ligeros, por lo que el cliente puede crear y mantener cualquier número de objetos de pintura, cada uno configurado para un uso determinado.

Factorizar todos estos atributos de color y estilístico fuera del estado del lienzo, y en (varios) objetos de pintura, permite que las operaciones de guardado y restauración en SKCanvas sean mucho más eficaces, ya que todo lo que tienen que hacer es mantener la pila de la matriz y la configuración del clip.

Efectos

Más allá de atributos simples, como colores, trazos y valores de texto, las pinturas admiten efectos. Se trata de subclases de diferentes aspectos de la canalización de dibujo, que cuando se hace referencia a una pintura, se llama para invalidar parte de la canalización de dibujo.

Hay cinco tipos de efectos que se pueden asignar a un objeto de pintura:

Effect Detalles
Modo de fusión Modos de combinación y modos de transferencia Duff-Porter.
Filtro de color Modificación de los colores de origen antes de aplicar el modo de mezcla.
Filtro de máscara Modificación de la máscara alfa antes de colorear y dibujar (por ejemplo, desenfoque).
Efecto path Modificación de la geometría (ruta de acceso) antes de que se genere la máscara alfa (por ejemplo, guiones).
Sombreado Degradados y patrones de mapa de bits.

Constructores

Nombre Description
SKPaint()

Inicializa una nueva instancia de la SKPaint clase con la configuración predeterminada.

Propiedades

Nombre Description
Blender

Obtiene o establece el personalizado SKBlender para la redacción.

BlendMode

Obtiene o establece el modo de combinación.

Color

Obtiene o establece el color de primer plano de la pintura.

ColorF

Obtiene o establece el color de la pintura como un SKColorF (RGBA de punto flotante).

ColorFilter

Obtiene o establece el filtro de color de la pintura.

Handle

Obtiene o establece el identificador en el objeto nativo subyacente.

(Heredado de SKObject)
IgnorePublicDispose

Obtiene un valor que indica si la llamada al público Dispose() debe ser no-op.

(Heredado de SKNativeObject)
ImageFilter

Obtiene o establece el filtro de imagen.

IsAntialias

Obtiene o establece un valor que indica si está habilitado el suavizado de alias.

IsDisposed

Obtiene un valor que indica si el objeto ya se ha eliminado.

(Heredado de SKNativeObject)
IsDither

Obtiene o establece un valor que indica si la dithering está habilitada.

IsStroke

Obtiene o establece un valor que indica si se va a pintar un trazo o el relleno.

MaskFilter

Obtiene o establece el filtro de máscara que se va a usar al pintar.

OwnsHandle

Obtiene o establece un valor que indica si este objeto posee su identificador y debe destruir el objeto nativo cuando se elimina.

(Heredado de SKNativeObject)
PathEffect

Obtiene o establece el efecto de ruta de acceso que se va a usar al pintar.

Shader

Obtiene o establece el sombreador que se va a usar al pintar.

StrokeCap

Obtiene o establece un valor que indica cómo se tratan las líneas y rutas de acceso iniciales y finales de trazos.

StrokeJoin

Obtiene o establece el tipo de combinación de la ruta de acceso.

StrokeMiter

Obtiene o establece el límite de miter de la pintura.

StrokeWidth

Obtiene o establece el ancho del trazo de la pintura.

Style

Obtiene o establece el estilo de pintura.

Métodos

Nombre Description
Clone()

Crea una copia de la pintura actual.

Dispose()

Libera todos los recursos usados por este SKNativeObject.

(Heredado de SKNativeObject)
Dispose(Boolean)

Libera los recursos no administrados utilizados por SKPaint y, opcionalmente, libera los recursos administrados.

DisposeInternal()

Desencadena un dispose y omite el valor de IgnorePublicDispose.

(Heredado de SKNativeObject)
DisposeManaged()

Implementado por tipos derivados SKObject para destruir los objetos administrados.

(Heredado de SKObject)
DisposeNative()

Implementado por tipos derivados SKObject para destruir cualquier objeto nativo.

DisposeUnownedManaged()

Implementado por tipos derivados SKObject para eliminar objetos administrados que no son propiedad de esta instancia.

(Heredado de SKObject)
GetFillPath(SKPath, Single)

Crea una nueva ruta de acceso a partir del resultado de aplicar cualquiera y todos los efectos a una ruta de acceso de origen.

GetFillPath(SKPath, SKMatrix)

Crea una nueva ruta de acceso a partir del resultado de aplicar cualquiera y todos los efectos a una ruta de acceso de origen con una matriz de transformación.

GetFillPath(SKPath, SKPath, Single)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen, devolviendo el resultado en el destino.

GetFillPath(SKPath, SKPath, SKMatrix)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen con una matriz de transformación, escribiendo el resultado en el destino.

GetFillPath(SKPath, SKPath, SKRect, Single)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen, devolviendo el resultado en el destino.

GetFillPath(SKPath, SKPath, SKRect, SKMatrix)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen con la selección y transformación, escribiendo el resultado en el destino.

GetFillPath(SKPath, SKPath, SKRect)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen, devolviendo el resultado en el destino.

GetFillPath(SKPath, SKPath)
Obsoletos.

Aplica todos los efectos y a una ruta de acceso de origen, devolviendo el resultado en el destino.

GetFillPath(SKPath, SKPathBuilder, Single)

Calcula la geometría rellenada de la ruta de acceso de origen en la escala de resolución especificada y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKPathBuilder, SKMatrix)

Calcula la geometría rellenada de la ruta de acceso de origen después de aplicar una matriz de transformación y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKPathBuilder, SKRect, Single)

Calcula la geometría rellenada de la ruta de acceso de origen dentro del rectángulo de selección en la escala de resolución especificada y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKPathBuilder, SKRect, SKMatrix)

Calcula la geometría rellenada de la ruta de acceso de origen dentro del rectángulo de selección después de aplicar una matriz de transformación y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKPathBuilder, SKRect)

Calcula la geometría rellenada de la ruta de acceso de origen dentro del rectángulo de selección y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKPathBuilder)

Calcula la geometría rellenada de la ruta de acceso de origen mediante el estilo de esta pintura y escribe el resultado en el generador de rutas de acceso de destino.

GetFillPath(SKPath, SKRect, Single)

Crea una nueva ruta de acceso a partir del resultado de aplicar cualquiera y todos los efectos a una ruta de acceso de origen.

GetFillPath(SKPath, SKRect, SKMatrix)

Crea una nueva ruta de acceso a partir del resultado de aplicar efectos a una ruta de acceso de origen con selección y transformación.

GetFillPath(SKPath, SKRect)

Crea una nueva ruta de acceso a partir del resultado de aplicar cualquiera y todos los efectos a una ruta de acceso de origen.

GetFillPath(SKPath)

Crea una nueva ruta de acceso a partir del resultado de aplicar cualquiera y todos los efectos a una ruta de acceso de origen.

Reset()

Restablece todas las propiedades de pintura a sus valores predeterminados.

SetColor(SKColorF, SKColorSpace)

Establece el color de la pintura mediante un valor de color de punto flotante en el espacio de color especificado.

Se aplica a