how to avoid a single pixel line disappear in wpf?

1.1k Views Asked by At

I use a Path element(StrokeThickness="1" SnapsToDevicePixels="True") in Grid. I want to resize the window, the Grid element is wrapped by a Viewbox element.

Problem

When I resize the window, the Path will disappear some time. If I turn SnapsToDevicePixels to false, the Path element may blur which is not what I want.

How to avoid a single pixel line dispear?

the XAML code:

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="207" Width="475">
   <Viewbox Stretch="Fill">
       <Grid Height="320" Width="517">
          <Path Data="M0,0 H1 z" StrokeThickness="1" Stroke="Black" Margin="72,73,79,218" Stretch="Fill" SnapsToDevicePixels="True" MinHeight="1"/>
       </Grid>
   </Viewbox>

Pity for I have no reputation to post the runtime effect.

1

There are 1 best solutions below

0
On

I have experimented the same problem with separators put in a Viewbox. Some of these disappear for some resolutions. To fix it, I replace them with border with 1 pixel height :

< Border Background="DarkGray" Grid.Row="0" Grid.ColumnSpan="7" Height="1" />

This avoid single line of one pixel to disappear in viewBox. Hope it could be useful for you too.