У меня есть SVG-графический объект, который представляет собой квадрат 264x264 в центре окна просмотра 400x400, и что 68 пикселей прокладки вокруг квадрата являются важной частью изображения, я хочу, чтобы это отображалось в WPF. Я использую библиотеку для преобразования SVG рисования в WPF DrawingImage, а выход после того, как я переполнена его в страницу, чтобы просмотреть это выглядит следующим образом:Как предотвратить WPF от обрезки моей векторной графики?
<Page x:Class="Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="400"
Title="Page1">
<Image>
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:svg="http://sharpvectors.codeplex.com/runtime/">
<DrawingGroup.Children>
<DrawingGroup>
<DrawingGroup.Children>
<DrawingGroup>
<DrawingGroup.Children>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="#FFAAFFAA">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" Thickness="10" StartLineCap="Flat" EndLineCap="Flat" LineJoin="Miter" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="0" RadiusY="0" Rect="68,68,264,264" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup.Children>
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0,0,400,400" />
</DrawingGroup.ClipGeometry>
<DrawingGroup.Transform>
<TranslateTransform X="0" Y="0" />
</DrawingGroup.Transform>
</DrawingGroup>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingGroup.Children>
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0,0,400,400" />
</DrawingGroup.ClipGeometry>
</DrawingGroup>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Page>
Полученное изображение представляет собой квадрат, который полностью заполняет его контейнер, вместо того, чтобы оставлять вокруг него пустое пространство, как я хочу. Как получить WPF, чтобы сохранить это пространство, а не обрезать его?
работает как шарм! Для тех из вас, кто использует одну и ту же конверсионную библиотеку (SharpVectors, New BSD license), довольно просто изменить свой вывод, чтобы создать для вас эти прозрачные прямоугольники. Внутри оператора if, начинающегося с WpfSvgRendering.cs в строке 140 (предполагая, что sharpvectors-24484.zip - ваш исходный пакет), для каждой 'drawGroup.ClipGeometry = new RectangleGeometry ([некоторый экземпляр Rectangle]);' добавить '_drawGroup.Children .Insert (0, новый GeometryDrawing() {Brush = Brushes.Transparent, Geometry = new RectangleGeometry ([некоторый экземпляр Rectangle])}); 'на следующей строке – user2816684