سؤال

لدي كائنات bitmapdata مع قنوات ألفا. أرغب في دمجها في واحدة باستخدام Max (channel_image_one ، channel_image_two) لكل قناة ، بما في ذلك ألفا. هل هناك طريقة سهلة لتحقيق هذه النتيجة؟

هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك طريقة مستقيمة إلى الأمام Bitmapdata لدمج Alpha Chanel بهذه الطريقة. ربما يمكن أن تفعل RGB بمساعدة Draw () لتطبيق وضع مزيج ، لكنني لا أعتقد أنه سيعمل إذا كنت بحاجة إلى الحد الأقصى الصارم لكل شانيل).

علاوة على ذلك ، يمكنك إنشاء تظليل بفضل Pixelbender لأداء هذه المهمة. إنها الأداة المثالية لهذا النوع من التلاعب.

أبطأ في الأداء ولكن أسرع في الإعداد إذا لم يتم استخدامك لـ PB ، يمكنك فقط تكرار/مقارنة/كتابة البيكسلات واحدة تلو الأخرى مع bitmapdata.getpixel32 ()/setPixel32 (). في حال ذهبت لذلك ، فكر في استخدام BitmapData.lock ()/فتح () لتعزيز الأداء.

نصائح أخرى

إذا كنت تريد max (image_one ، image_two) يجب أن تكون مكافئة لـ يضيء وضع المزيج.

هنا مقتطف من Foundation Actionscript 3.0 تأثيرات الصورة :

public function lighten(topPixel:uint, bottomPixel:uint):uint{
   return Math.max(topPixel,bottomPixel);
}

يمكنك الحصول على الملفات المطلوبة من مجلد الفصل 2 من مصدر الرمز البريدي.

استخدم نصيحة ثيو مع

  • قفل()
  • للحلقات
  • الغاء القفل()

للسرعة مع bitmapdata أو استخدام pixelbender. على ما يبدو حسب أدوبي, ، أكثر من 90 ٪ من مستخدم Flash Player يستخدم الإصدار 10 بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top