سؤال

هل هناك وسيلة لتطبيق جهاز Colortransform على صورة نقطية في دائرة بدلاً من المستطيل؟

بدلاً من محو الأجزاء المستطيلة من الصورة عن طريق تقليل قناة ألفا كما في الكود أدناه ، أود أن أفعل ذلك في دوائر.

 _bitmap.colorTransform(new Rectangle(mouseX-d/2, mouseY-d/2, d, d),
 new ColorTransform(1, 1, 1, .5, 0, 0, 0, 1));

لديّ بعض التعليمات البرمجية التي تحلق من خلال وحدات البكسل ، وتستخرج قيمة ألفا وتستخدم setpixel ولكنها تتخبط بشكل كبير من وظيفة النقل الملونة.

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

المحلول

حاول إنشاء دائرة باستخدام رسم API (Flash.display.graphics) ثم رسم ذلك على بيانات Bitmap باستخدام blendmode.erase. قد يحل هذا مشكلتك ، إذا فهمتها بشكل صحيح.

var circle : Shape = new Shape;
circle.graphics.beginFill(0xffcc00, 1);
circle.graphics.drawEllipse(-50, -50, 100, 100);

// Create a transformation matrix for the draw() operation, with
// a translation matching the mouse position.
var mtx : Matrix = new Matrix();
mtx.translate(mouseX, mouseY);

// Draw circle at mouse position with the ERASE blend mode, to
// set affected pixels to alpha=0.
myBitmap.draw(circle, mtx, null, BlendMode.ERASE);

لست متأكدًا بنسبة 100 ٪ من أن وضع مزيج التمحى يعمل بشكل مرضي مع أمر Draw () ، لكن لا يمكنني معرفة سبب عدم حدوث ذلك. واسمحوا لي أن أعرف كيف يعمل!

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