ShapeRenderer

ShapeRenderer class

يوفر طرقًا لعرض فرديShape أوGroupShape إلى صورة نقطية أو متجهة أو إلى كائن رسومي.

لمعرفة المزيد، قم بزيارةالعمل مع الأشكال مقالة توثيقية.

public class ShapeRenderer : NodeRendererBase

المنشئون

اسموصف
ShapeRenderer(ShapeBase)يقوم بتهيئة مثيل جديد لهذه الفئة.

الخصائص

اسموصف
BoundsInPoints { get; }يحصل على الحدود الفعلية للشكل بالنقاط.
OpaqueBoundsInPoints { get; }يحصل على الحدود المعتمة للشكل بالنقاط.
SizeInPoints { get; }يحصل على الحجم الفعلي للشكل بالنقاط.

طُرق

اسموصف
GetBoundsInPixels(float, float)يحسب حدود الشكل بالبكسل لعامل تكبير ودقة محددين.
GetBoundsInPixels(float, float, float)يحسب حدود الشكل بالبكسل لعامل تكبير ودقة محددين.
GetOpaqueBoundsInPixels(float, float)يحسب الحدود المعتمة للشكل بالبكسل لعامل تكبير ودقة محددين.
GetOpaqueBoundsInPixels(float, float, float)يحسب الحدود المعتمة للشكل بالبكسل لعامل تكبير ودقة محددين.
GetSizeInPixels(float, float)يحسب حجم الشكل بالبكسل لعامل تكبير ودقة محددين.
GetSizeInPixels(float, float, float)يحسب حجم الشكل بالبكسل لعامل تكبير ودقة محددين.
RenderToScale(Graphics, float, float, float)يعرض الشكل فيGraphics الكائن إلى مقياس محدد.
RenderToSize(Graphics, float, float, float, float)يعرض الشكل فيGraphics الكائن إلى حجم محدد.
Save(Stream, ImageSaveOptions)يقوم بتحويل الشكل إلى صورة ويحفظه في مجرى.
Save(Stream, SvgSaveOptions)يقوم بتحويل الشكل إلى صورة SVG وحفظه في مجرى مائي.
Save(string, ImageSaveOptions)يقوم بتحويل الشكل إلى صورة ويحفظه في ملف.
Save(string, SvgSaveOptions)يقوم بتحويل الشكل إلى صورة SVG وحفظه في ملف.

أمثلة

يوضح كيفية عرض شكل باستخدام كائن رسومي وعرضه باستخدام نموذج Windows.

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

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

    // فيما يلي طريقتان لاستخدام فئة "ShapeRenderer" لعرض شكل إلى كائن رسومي.
    // 1 - إنشاء شكل باستخدام مخطط، ثم تقديمه بمقياس محدد.
    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 - إنشاء مجموعة أشكال، ثم تقديمها إلى حجم معين.
    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>
/// يقوم بمعالجة وعرض قائمة من الأشكال.
/// </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;
}

أنظر أيضا