سؤال

لدي عنصر تحكم صورة WPF مع تأثير Blur المرفق. هل هناك طريقة لحفظ الصورة (مع طمس) دون استخدام rendertargetbitmap؟

شكرا لك.

تحديث: أنا أستخدم الآن تأثير مخصص جديد يستمد من System.windows.media.Effects.shadereffect. أرغب في إنقاذ صورتي مع تأثير Shader المطبق.

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

المحلول

الطريقة الوحيدة التي يمكنك تقديم الصورة النقطية تستخدم rendertargetbitmap.

إلقاء نظرة على هذا المثال:

BitmapSource bitmap=GetYourBitmap();
Rectangle r=new Rectangle();
r.Background=new ImageBrush(bitmap);
r.Effect=yourEffect;

Size sz=new Size(bitmap.PixelWidth, bitmap.PixelHeight);
r.Measure(sz);
r.Arrange(new Rect(sz);

var rtb=new RenderTargetBitmap();
rtb.Render(r);
return rtb;//here is your bitmap with effects applied

أتمنى أن يساعدك هذا

نصائح أخرى

أعلم أن هذا سؤال قديم ... لكنني اعتقدت أنني أود أن أشير الناس إلى منشور جيمي رودريجيز (http://blogs.msdn.com/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx.) حول هذا الموضوع.

كان لدي موقف حيث كان استخدام rendertargetbitmap مما يؤدي إلى صورة فارغة ... وكانت منشور جيمي هو الجواب بالنسبة لي.

آمل أن يساعد شخص آخر أيضا.

هذا شيء أردت أيضا. وفقا لهذا: http://social.msdn.microsoft.com/forums/en/wpfprerelease/Thread/E2EBF264-E087-4BFE-A69B-24C884675C80. RenderTargetBitMap لا يستخدم HW (GPU) لتقديمها، والبرامج فقط. يا للأسف.

كتف

نظرا لأن تأثير Shader هو بحكم التعريف المطبق على بطاقة الفيديو، فإن الطريقة الوحيدة التي يمكنك الحصول عليها نسخة منه في الذاكرة الرئيسية هي الاستيلاء عليها من ذاكرة الشاشة. لذلك rendertargetbitmap هو الحل الخاص بك. هل هناك أي سبب محدد تريد تجنبه؟

ها أنت ذا: http://perspectiveivefx.codeplex.com/ وكل العمل المنجز بواسطة GPU

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