LoadPartialPixels

RasterImage.LoadPartialPixels method

يتم تحميل وحدات البكسل جزئيًا بالحزم .

public void LoadPartialPixels(Rectangle desiredRectangle, IPartialPixelLoader pixelLoader)
معامليكتبوصف
desiredRectangleRectangleالمستطيل المطلوب.
pixelLoaderIPartialPixelLoaderمحمل البكسل.

أمثلة

يوضح المثال التالي كيفية تحميل ومعالجة وحدات البكسل لصورة نقطية باستخدام المعالج الجزئي الخاص بك. على سبيل المثال ، ضع في اعتبارك مشكلة حساب وحدات البكسل الشفافة تمامًا للصورة. من أجل حساب الشفافية باستخدام آلية التحميل الجزئي ، تم تقديم فئة منفصلة TransparentPixelCounter تنفذ Aspose.Imaging.IPartialPixelLoader.

[C#]

using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(@"c:\temp\alpha.png"))
{
    Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;

    // قم بإنشاء مثيل لـ Aspose.Imaging.IPartialPixelLoader وقم بتمريره إلى Aspose.Imaging.RasterImage.LoadPartialPixels
    TransparentPixelCounter counter = new TransparentPixelCounter();

    // تحميل بكسل للصورة بأكملها. يمكن تحديد أي جزء مستطيل من الصورة كمعامل أول لطريقة Aspose.Imaging.RasterImage.LoadPartialPixels.
    rasterImage.LoadPartialPixels(rasterImage.Bounds, counter);

    System.Console.WriteLine("The number of fully transparent pixels is {0}", counter.Count);
    System.Console.WriteLine("The total number of pixels is {0}", image.Width * image.Height);
}

// قد يبدو العداد كالتالي:
/// <summary>
/// تحسب عدد وحدات البكسل الشفافة بالكامل بقيمة قناة ألفا تساوي 0.
/// </summary>
private class TransparentPixelCounter : IPartialPixelLoader
{
    /// <summary>
    /// عدد وحدات البكسل الشفافة بالكامل.
    /// </summary>
    private int count;

    /// <summary>
    /// يحصل على عدد وحدات البكسل الشفافة بالكامل.
    /// </summary>
    public int Count
    {
        get { return this.count; }
    }

    /// <summary>
    /// يعالج وحدات البكسل المحملة. يتم استدعاء هذه الطريقة مرة أخرى في كل مرة يتم فيها تحميل جزء جديد من وحدات البكسل.
    /// </summary>
    /// < param name = "pixelsRectangle" > مستطيل البكسل. < / param >
    /// < param name = "pixels" > وحدات البكسل ARGB 32 بت. < / param >
    /// < param name = "start" > نقطة بكسل البداية. < / param >
    /// < param name = "end" > نقطة نهاية البكسل. < / param >
    public void Process(Aspose.Imaging.Rectangle pixelsRectangle, Aspose.Imaging.Color[] pixels, Aspose.Imaging.Point start, Aspose.Imaging.Point end)
    {
        foreach (Color pixel in pixels)
        {
            if (pixel.A == 0)
            {
                this.count++;
            }
        }
    }
}

أنظر أيضا