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)يحول الشكل إلى aGraphics كائن بمقياس محدد.
RenderToSize(Graphics, float, float, float, float)يحول الشكل إلى aGraphics كائن بحجم محدد.
Save(Stream, ImageSaveOptions)يعرض الشكل في صورة ويحفظ في دفق.
Save(string, ImageSaveOptions)يحول الشكل إلى صورة ويحفظ في ملف.

أمثلة

يوضح كيفية تقديم شكل باستخدام كائن رسومي وعرضه باستخدام نموذج 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;
}

أنظر أيضا