حفظ صورة WPF مع تأثيرات Shader المطبقة
سؤال
لدي عنصر تحكم صورة 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