ShapeRenderer

ShapeRenderer class

Fournit des méthodes pour restituer un individuShape ouGroupShape vers une image raster ou vectorielle ou vers un objet graphique.

Pour en savoir plus, visitez leTravailler avec des formes article documentaire.

public class ShapeRenderer : NodeRendererBase

Constructeurs

NomLa description
ShapeRenderer(ShapeBase)Initialise une nouvelle instance de cette classe.

Propriétés

NomLa description
BoundsInPoints { get; }Obtient les limites réelles de la forme en points.
OpaqueBoundsInPoints { get; }Obtient les limites opaques de la forme en points.
SizeInPoints { get; }Obtient la taille réelle de la forme en points.

Méthodes

NomLa description
GetBoundsInPixels(float, float)Calcule les limites de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
GetBoundsInPixels(float, float, float)Calcule les limites de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
GetOpaqueBoundsInPixels(float, float)Calcule les limites opaques de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
GetOpaqueBoundsInPixels(float, float, float)Calcule les limites opaques de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
GetSizeInPixels(float, float)Calcule la taille de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
GetSizeInPixels(float, float, float)Calcule la taille de la forme en pixels pour un facteur de zoom et une résolution spécifiés.
RenderToScale(Graphics, float, float, float)Rend la forme dans unGraphics objet à une échelle spécifiée.
RenderToSize(Graphics, float, float, float, float)Rend la forme dans unGraphics objet à une taille spécifiée.
Save(Stream, ImageSaveOptions)Rend la forme dans une image et l’enregistre dans un flux.
Save(string, ImageSaveOptions)Rend la forme dans une image et l’enregistre dans un fichier.

Exemples

Montre comment restituer une forme avec un objet Graphics et l’afficher à l’aide d’un Windows Form.

public void RenderShapesOnForm()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    ShapeForm shapeForm = new ShapeForm(new Size(1017, 840));

    // Vous trouverez ci-dessous deux manières d'utiliser la classe "ShapeRenderer" pour restituer une forme dans un objet Graphics.
    // 1 - Créez une forme avec un graphique et restituez-la à une échelle spécifique.
    Chart chart = builder.InsertChart(ChartType.Pie, 500, 400).Chart;
    chart.Series.Clear();
    chart.Series.Add("Desktop Browser Market Share (Oct. 2020)",
        new[] { "Google Chrome", "Apple Safari", "Mozilla Firefox", "Microsoft Edge", "Other" },
        new[] { 70.33, 8.87, 7.69, 5.83, 7.28 });

    Shape chartShape = (Shape)doc.GetChild(NodeType.Shape, 0, true);

    shapeForm.AddShapeToRenderToScale(chartShape, 0, 0, 1.5f);

    // 2 - Créez un groupe de formes et affichez-le à une taille spécifique.
    GroupShape group = new GroupShape(doc);
    group.Bounds = new RectangleF(0, 0, 100, 100);
    group.CoordSize = new Size(500, 500);

    Shape subShape = new Shape(doc, ShapeType.Rectangle);
    subShape.Width = 500;
    subShape.Height = 500;
    subShape.Left = 0;
    subShape.Top = 0;
    subShape.FillColor = Color.RoyalBlue;
    group.AppendChild(subShape);

    subShape = new Shape(doc, ShapeType.Image);
    subShape.Width = 450;
    subShape.Height = 450;
    subShape.Left = 25;
    subShape.Top = 25;
    subShape.ImageData.SetImage(ImageDir + "Logo.jpg");
    group.AppendChild(subShape);

    builder.InsertNode(group);

    GroupShape groupShape = (GroupShape)doc.GetChild(NodeType.GroupShape, 0, true);
    shapeForm.AddShapeToRenderToSize(groupShape, 880, 680, 100, 100);

    shapeForm.ShowDialog();
}

/// <summary>
/// Rend et affiche une liste de formes.
/// </summary>
private class ShapeForm : Form
{
    public ShapeForm(Size size)
    {
        Size = size;
        mShapesToRender = new List<KeyValuePair<ShapeBase, float[]>>();
    }

    public void AddShapeToRenderToScale(ShapeBase shape, float x, float y, float scale)
    {
        mShapesToRender.Add(new KeyValuePair<ShapeBase, float[]>(shape, new[] {x, y, scale}));
    }

    public void AddShapeToRenderToSize(ShapeBase shape, float x, float y, float width, float height)
    {
        mShapesToRender.Add(new KeyValuePair<ShapeBase, float[]>(shape, new[] {x, y, width, height}));
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        foreach (KeyValuePair<ShapeBase, float[]> renderingArgs in mShapesToRender)
            if (renderingArgs.Value.Length == 3)
                RenderShapeToScale(renderingArgs.Key, renderingArgs.Value[0], renderingArgs.Value[1],
                    renderingArgs.Value[2]);
            else if (renderingArgs.Value.Length == 4)
                RenderShapeToSize(renderingArgs.Key, renderingArgs.Value[0], renderingArgs.Value[1],
                    renderingArgs.Value[2], renderingArgs.Value[3]);
    }

    private void RenderShapeToScale(ShapeBase shape, float x, float y, float scale)
    {
        ShapeRenderer renderer = new ShapeRenderer(shape);
        using (Graphics formGraphics = CreateGraphics())
        {
            renderer.RenderToScale(formGraphics, x, y, scale);
        }
    }

    private void RenderShapeToSize(ShapeBase shape, float x, float y, float width, float height)
    {
        ShapeRenderer renderer = new ShapeRenderer(shape);
        using (Graphics formGraphics = CreateGraphics())
        {
            renderer.RenderToSize(formGraphics, x, y, width, height);
        }
    }

    private readonly List<KeyValuePair<ShapeBase, float[]>> mShapesToRender;
}

Voir également