سؤال

أنا فقط أبدأ بتطوير Android وأنا قادم من JavaScript/HTML World ، لذا أقوم حاليًا بالتحقيق في إمكانيات Android SDK.

يدعم HTML 5 Canvas العمليات المركبة (انظر هنا).

هل هذا ممكن في قماش Android؟ قمت بمسح واجهة برمجة تطبيقات فئة القماش ولكن لم أتمكن من العثور على أي شيء مفيد. أحتاج على الأقل العملية المركب "مصدر في" أو (إذا لم يكن ذلك ممكنًا) "Source-Atop".

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

المحلول

يتم التعامل مع التكوين من خلال الرسم على أ Canvas مع Paint الذي يستخدم PorterDuffXfermode.

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

يرى هنا لمزيد من المعلومات. تمكنت أيضًا من تجاوز onPaint حتى نتمكن من تطبيق هذا التكوين على العناصر التي ترسم humeselves.

نصائح أخرى

لم أتطلع إلى القيام بهذه الأنواع من العمليات من قبل ، لكنني أعتقد أن هناك طريقة للقيام بها باستخدام المستقيم شكل. يمكنك تحديد المستطيلات لتمييز المناطق التي يجب رسمها إلى القماش ، أو أيها لإخراج الصورة المصدر ، و Rect يحتوي الفصل على بعض ميزات المقارنة المدمجة. على سبيل المثال لتقليد مصدر ، يمكنك استخدامه setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) لجعل المستطيل الجديد الخاص بك لا يحتوي إلا على المنطقة المتقاطعة للصورتين. بعد ذلك ، يمكنك استخدام هذا المستطيل كوسيطة في أحد أوامر السحب الخاصة بـ Canvas ، واطلوها أن تأخذ وحدات البكسل فقط من الصورة المصدر الموجودة داخل هذا المستطيل. يمكنك بعد ذلك التحكم في الرسم في المحور z بالترتيب الذي يتم به تنفيذ أوامر السحب.

وجدت ذلك بنفسي. يقوم PorterDuffXferMode بتنفيذ كل هذه الأوضاع المركبة.

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