Смотрите изображение. Я бы хотел, чтобы средняя линия была хрустящей 1-пиксельной. Вы можете скопировать и вставить образец разметки в kaxaml .
альтернативный текст http://img832.imageshack.us/img832/1704/lines.png
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Image SnapsToDevicePixels="True" Stretch="None"> <Image.Source> <DrawingImage> <DrawingImage.Drawing> <DrawingGroup> <GeometryDrawing> <GeometryDrawing.Pen> <Pen Brush="Red" Thickness="1"/> </GeometryDrawing.Pen> <GeometryDrawing.Geometry> <LineGeometry StartPoint="0,0" EndPoint="50,0"/> </GeometryDrawing.Geometry> </GeometryDrawing> <GeometryDrawing> <GeometryDrawing.Pen> <Pen Brush="Black" Thickness="1"/> </GeometryDrawing.Pen> <GeometryDrawing.Geometry> <LineGeometry StartPoint="0,5.860" EndPoint="50,5.860"/> </GeometryDrawing.Geometry> </GeometryDrawing> <GeometryDrawing> <GeometryDrawing.Pen> <Pen Brush="Black" Thickness="1"/> </GeometryDrawing.Pen> <GeometryDrawing.Geometry> <LineGeometry StartPoint="0,12" EndPoint="50,12"/> </GeometryDrawing.Geometry> </GeometryDrawing> </DrawingGroup> </DrawingImage.Drawing> </DrawingImage> </Image.Source> </Image> </Page>
Я нашел решение по адресу: http://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.setedgemode.aspx
<Image Stretch="None" RenderOptions.EdgeMode="Aliased"> RenderOptions.SetEdgeMode(this, EdgeMode.Aliased);
Измените среднюю линию на:
<LineGeometry StartPoint="0,6" EndPoint="50,6"/>
Вы можете получить четкую линию на границе пикселей, поместив линию на целую пронумерованную единицу.
Я видел аналогичную проблему с элементом управления Border, хотя @phi ваше решение работало в большинстве случаев, мне также пришлось добавить следующее, чтобы оно полностью заработало:
SnapsToDevicePixels="True"