سؤال

أنا أعرف كيفية تنفيذها، ولكن ما لا أعرفه هو ما إذا كنت تريد تطبيق بكسل التحول عن طريق البكسل أو هل هناك طريقة أخرى للتأثير على الصورة بأكملها، باستخدام مكالمة واحدة، إلخ؟

AFAIK Get.Set بكسل بطيء جدا. لست متأكدا مما إذا فعلوا ذلك بهذه الطريقة.

لذلك إذا كان مرشح تدرج الرمادي / النسيء كحالة بسيطة، فكيف يكتبها واحدة؟

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

المحلول

يجب عليك قفل الصورة ثم العمل مع الذاكرة تجاوز طريقة setpixel مباشرة مباشرة.انظر هنا أو حتى أفضل هنا

لفحص يمكنك ضبط اللون الأزرق إلى 255 على النحو التالي

   BitmapData bmd=bm.LockBits(new Rectangle(0, 0, 10, 10), System.Drawing.Imaging.ImageLockMode.ReadOnly, bm.PixelFormat);
      int PixelSize=4;
      for(int y=0; y<bmd.Height; y++)
      {
        byte* row=(byte *)bmd.Scan0+(y*bmd.Stride);
        for(int x=0; x<bmd.Width; x++)
        {
          row[x*PixelSize]=255;
        }
      } // it is copied from the last provided link.

نصائح أخرى

من أجل تحقيق أداء أسرع، قد ترغب في التحقق من تنفيذ تأثيرات Pixel Shader Pixel في WPF، والتي تعمل مع كائنات البصرية .NET WPF، وليس فقط الصور.

إلقاء نظرة على مقالة توضح بعض خطوات التنفيذ الأساسية لمثل هذا التأثير:

http://bursjootech.blogspot.com/2008/06/grayscale-effect-pixel-shader-effect-in.html.

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