سؤال

وأنا أحاول لبناء WPF DrawingBrush التي من شأنها رسم نمط فتحة باستخدام اثنين من 1PX من 1px المستطيلات. ان نمط الناتجة تبدو الخلفية على تطبيقات ماكنتوش الكلاسيكية.

وهنا ما أعمل مع:

<Canvas SnapsToDevicePixels="True">
    <Canvas.Background>
        <DrawingBrush x:Name="gridBackgroundBrush" 
        Viewport="0,0,10,10"            
        ViewportUnits="Absolute"
        TileMode="Tile">
          <DrawingBrush.Drawing>
            <DrawingGroup>
              <DrawingGroup.Children>                                   
                <GeometryDrawing Geometry="M0,0 L10,0 10,10, 0,10Z" Brush="Green"/>                 
                <GeometryDrawing Geometry="M10,10 L20,10 20,20, 10,20Z" Brush="Green" />                                
              </DrawingGroup.Children>
            </DrawingGroup>
          </DrawingBrush.Drawing>
        </DrawingBrush>
    </Canvas.Background>
</Canvas>

وكل شيء يبدو واضحة وحادة، إلا أن الصناديق هي الطريقة كبيرة جدا. وأنا ضبط منفذ العرض على الفرشاة، تبدأ الأمور ضبابية. يبدو أن تنعيم هو ما يقتلني. انها تريد استخدام 3PX لتتلاشى من الأخضر الصلبة إلى لا شيء، والذي لا يعمل عندما أحصل على أحجام أقل من 3-4px. هل هناك أي شيء يمكنني القيام به لتعطيل تماما تنعيم والقيام الرسم بكسل دقة؟

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

المحلول

وإزاحة الرسم مع 0.5px وعليك التخلص من تأثير الحواف. يحدث ذلك لأن ويتم الرسم على حافة بكسل تعويض، بدلا من التركيز على بكسل الفعلي تعويض التي قمت بتحديدها. بواسطة offset'ing X، Y مع نصف بكسل، كنت اقول محرك رسم رسم على بكسل نفسها، مما يلغي الحاجة إلى الحواف.

لسبب ما لم تنجح هذه الطريقة مع gradientbrushes بالرغم من ذلك.

ويشبه هذا السلوك إلى ما لديك في الكوارتات بالاعتماد على ماك.

ملحوظة: انها <م> لا إطار العرض التي يجب أن يعوض، ولكن الشكل الفعلي كنت رسم عند استخدام الفرشاة المحدد

لإجابة أكثر اكتمالا، يرجى قراءة هذه المقالة .

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