سؤال

لدي إعلان ImageBrush التالي الذي أريد استخدامه لرسم خلفية النافذة.

     <ImageBrush x:Key="Fondo" 
      ImageSource="Fondo.png"        
      Viewport="0,0,0.1,0.1" TileMode="Tile"/>

إذا قمت بتعيينه باستخدام ملزمة StaticResource إلى خاصية الخلفية للنافذة، فسيتم تقديم الفرشاة بشكل صحيح، ولكن يتم تحجيم الصورة. هذا سلوك لا أريده، أريد أن يستخدم التطبيق الصورة في قراره الأصلي وكرره حسب الضرورة لملء خلفية النافذة، دون أي نوع من التحجيم. أنا لا أعرف ما أفعله خطأ.

الصورة التي أستخدمها هي 200px واسعة و 200 بكسل. قيم Viewport لدي تم تخمينها، لكنها لم تكن تعمل قبل أن أفعل ذلك.

شكرا على اي مساعدة

تعديل: إصلاح تناقض في السؤال

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

المحلول

وجدت المشكلة. كانت الصورة PNG تم تصميمها بدقة 72 نقطة في البوصة. لذلك كان WPF تحجيمه لتتناسب مع دقة DPI 96 القياسية. المشكلة لم تكن مع الكود.

نصائح أخرى

إذا كنت تعرف حل الصورة المصدر، فيمكنك ضبط قيم Viewbox و Viewport باسم وحدات البكسل. قم بتعيين ViewBoxUnits و Viewportunits إلى مطلقا ويجب أن تكون قادرا على تحقيق التأثير الذي تريده.

<ImageBrush ViewBox="0,0,200,200" 
ViewBoxUnits="Absolute"
ViewPort="0,0,200,200"
ViewPortUnits="Absolute" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top