Рисование 2px Hatch кисти в WPF - PullRequest
1 голос
/ 19 мая 2009

Я пытаюсь создать WPF DrawingBrush, который будет рисовать шаблон штриховки, используя два прямоугольника размером 1 на 1 пиксель. Полученный шаблон будет выглядеть как фон в классических приложениях Macintosh.

Вот с чем я работаю:

<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. Что я могу сделать, чтобы полностью отключить сглаживание и рисовать с точностью до пикселя?

1 Ответ

1 голос
/ 04 октября 2009

Сместите чертеж на 0,5 пикселя, и вы избавитесь от эффекта сглаживания. Это происходит потому, что рисование выполняется по краю смещения пикселя, а не по фактическому смещению пикселя, которое вы указали. Смещая X, Y с половиной пикселя, вы указываете механизму рисования рисовать на самом пикселе, что устраняет необходимость сглаживания.

По какой-то причине это не работает с градиентными кистями.

Это поведение похоже на то, что вы имеете при рисовании Quarts на Mac.

Примечание: это не область просмотра, которую вы должны сместить, но фактическая фигура, которую вы рисуете при использовании указанной кисти.

Для более полного ответа, пожалуйста прочитайте эту статью .

...