WPF Нарисуйте несколько путей

Я пытаюсь рисовать с помощью Blend (в примере кодирую изображение папки), но у меня возникают проблемы с его формированием.

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

С сеткой размер изображения может изменяться автоматически, но все контуры занимают все места. Наконец, с некоторыми преобразованиями конечный результат приемлем, но для получения хорошего преобразования требуется много вычислений.

<Window x:Class="FolderVSG.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d" 
        Title="MainWindow">
    <Grid Width="300" Height="300" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Path Data="M0,0L3,0 4,1 9,1 9,9 0,9z" Fill="#FF1878D8" Stretch="Fill" Stroke="Black" HorizontalAlignment="Center" VerticalAlignment="Center">
            <Path.RenderTransform>
                <TransformGroup>
                    <ScaleTransform ScaleX="0.89"/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Path.RenderTransform>
        </Path>
        <Path Data="M1,0L9,0 8,9 0,9z" Fill="#FF185ED8" Stretch="Fill" Stroke="Black" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="1,1">
            <Path.RenderTransform>
                <TransformGroup>
                    <ScaleTransform ScaleY="0.8"/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Path.RenderTransform>
        </Path>
    </Grid>
</Window>

Может быть, проблема в том, как я рисую, может быть, у него макет, похожий на холст, но который изменяет размер от максимальной точки X Y и минимальной точки X Y.


person vernou    schedule 24.08.2014    source источник


Ответы (1)


Проблема в том, что при масштабировании пути становятся отдельными и независимыми? Вот как я прочитал ваш вопрос.

Если это так, добавьте свои пути на холст и сделайте так, чтобы они выглядели правильно. Затем поместите холст в окно просмотра. Поле просмотра будет равномерно масштабировать содержимое для вас, чтобы вы могли изменять размер и перемещать столько, сколько хотите. Имейте в виду, что для этой работы вашему холсту потребуется фиксированный размер.

<Viewbox>
  <Canvas Width="30" Height="20">
    <Path Data="..."/>
  </Canvas>
</Viewbox>

Если это не ответ, пожалуйста, уточните в своем вопросе, в чем заключается ваша трудность.

person kidshaw    schedule 24.08.2014
comment
Спасибо, это идеальное решение. - person vernou; 25.08.2014