رسم الصور باستخدام الرسومات

رسم الصور باستخدام الرسومات

مع مكتبة Aspose.PSD يمكنك رسم أشكال بسيطة مثل خطوط ومستطيلات ودوائر، بالإضافة إلى أشكال معقدة مثل المضلعات والمنحنيات والأقواس والأشكال بيزير. تنشئ مكتبة Aspose.PSD هذه الأشكال باستخدام فئة Graphics التي توجد في مساحة أسماء Aspose.PSD. الكائنات الرسومية مسؤولة عن أداء عمليات رسم مختلفة على صورة، مما يغير سطح الصورة. تستخدم فئة Graphics مجموعة متنوعة من كائنات المساعدة لتحسين الأشكال:

  • Pens، لرسم خطوط أو تحديد الأشكال أو رسم التمثيلات الهندسية الأخرى.

  • Brushes، لتعريف كيفية ملء المناطق.

  • Fonts، لتعريف شكل الحروف من النص.

الرسم باستخدام فئة الرسومات

أدناه مثال على الشيفرة يوضح استخدام فئة Graphics. تم تقسيم شيفرة المصدر إلى عدة أجزاء لتبقيها بسيطة وسهلة المتابعة. خطوة بخطوة، تظهر الأمثلة كيفية:

  1. إنشاء صورة.
  2. إنشاء وتهيئة كائن Graphics.
  3. تنظيف السطح.
  4. رسم قلب دائري.
  5. رسم مضلع ملون وحفظ الصورة.

عينات البرمجة

إنشاء صورة

ابدأ بإنشاء صورة باستخدام أي من الطرق الموصوفة في إنشاء الملفات.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string loadpath = dataDir + "sample.psd";
string outpath = dataDir + "CoreDrawingFeatures.bmp";
// Create an instance of Image
using (PsdImage image = new PsdImage(loadpath))
{
// load pixels
var pixels = image.LoadArgb32Pixels(new Rectangle(0, 0, 100, 10));
for (int i = 0; i < pixels.Length; i++)
{
// specify pixel color value (gradient in this case).
pixels[i] = i;
}
// save modified pixels.
image.SaveArgb32Pixels(new Rectangle(0, 0, 100, 10), pixels);
// export image to bmp file format.
image.Save(outpath, new BmpOptions());
}

إنشاء وتهيئة كائن Graphics

ثم قم بإنشاء وتهيئة كائن Graphics عن طريق تمرير كائن الصورة إلى مُنشئه.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string outpath = dataDir + "Arc.bmp";
// Create an instance of BmpOptions and set its various properties
BmpOptions saveOptions = new BmpOptions();
saveOptions.BitsPerPixel = 32;
// Create an instance of Image
using (Image image = new PsdImage(100, 100))
{
// Create and initialize an instance of Graphics class and clear Graphics surface
Graphics graphic = new Graphics(image);
graphic.Clear(Color.Yellow);
// Draw an arc shape by specifying the Pen object having red black color and coordinates, height, width, start & end angles
int width = 100;
int height = 200;
int startAngle = 45;
int sweepAngle = 270;
// Draw arc to screen and save all changes.
graphic.DrawArc(new Pen(Color.Black), 0, 0, width, height, startAngle, sweepAngle);
// export image to bmp file format.
image.Save(outpath, saveOptions);
}

تنظيف السطح

نظّف سطح الرسوميات عن طريق استدعاء طريقة Clear لفئة Graphics وتمرير اللون كمعلمة. تملأ هذه الطريقة سطح الرسومات باللون الذي تم تمريره كوسيط.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Create an instance of Image
using (PsdImage image = new PsdImage(500, 500))
{
var graphics = new Graphics(image);
// Clear the image surface with white color and Create and initialize a Pen object with blue color
graphics.Clear(Color.White);
var pen = new Pen(Color.Blue);
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100));
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f))
{
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) });
}
// export modified image.
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions());
}

رسم قلب دائري

يمكنك ملاحظة أن فئة Graphics قد قامت بتعريض العديد من الطرق لرسم وملء الأشكال. ستجد القائمة الكاملة للطرق في مرجع API Aspose.PSD لـ .NET. تم عرض العديد من إصدارات طريقة DrawEllipse المعرضة بواسطة فئة Graphics. تقبل جميع هذه الطرق كائن Pen كمعلمة أولى. يتم تمرير المعلمات لاحقًا لتحديد المستطيل المحيط بالقلب الدائري. لأجل هذا المثال استخدم الإصدار الذي يقبل كائن Rectangle كمعلمة ثانية لرسم قلب دائري باستخدام كائن Pen باللون المرغوب.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string loadpath = dataDir + "sample.psd";
string outpath = dataDir + "CoreDrawingFeatures.bmp";
// Create an instance of Image
using (PsdImage image = new PsdImage(loadpath))
{
// load pixels
var pixels = image.LoadArgb32Pixels(new Rectangle(0, 0, 100, 10));
for (int i = 0; i < pixels.Length; i++)
{
// specify pixel color value (gradient in this case).
pixels[i] = i;
}
// save modified pixels.
image.SaveArgb32Pixels(new Rectangle(0, 0, 100, 10), pixels);
// export image to bmp file format.
image.Save(outpath, new BmpOptions());
}

رسم مضلع ملون

ثم رسم مضلع باستخدام LinearGradientBrush ومصفوفة نقاط. فئة Graphics قد عرضت العديد من الإصدارات المعرضة لطريقة FillPolygon(). تقبل كل هذه كائن Brush كمعلمة أولى، تعريف خصائص الملء. المعلمة الثانية هي مصفوفة من النقاط. يرجى ملاحظة أن كل نقطتين متتاليتين في المصفوفة تحددان جانبًا من المضلع.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Create an instance of Image
using (PsdImage image = new PsdImage(500, 500))
{
var graphics = new Graphics(image);
// Clear the image surface with white color and Create and initialize a Pen object with blue color
graphics.Clear(Color.White);
var pen = new Pen(Color.Blue);
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100));
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f))
{
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) });
}
// export modified image.
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions());
}

رسم الصور باستخدام الرسومات: المصدر الكامل

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Create an instance of Image
using (PsdImage image = new PsdImage(500, 500))
{
var graphics = new Graphics(image);
// Clear the image surface with white color and Create and initialize a Pen object with blue color
graphics.Clear(Color.White);
var pen = new Pen(Color.Blue);
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100));
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f))
{
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) });
}
// export modified image.
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions());
}

يتم إنشاء جميع الفئات التي تنفذ IDisposable والتي تصل إلى موارد غير قيّدة في عبارة Using للتأكد من التخلص منها بشكل صحيح.