WPF холст масштабирования и рендеринга - PullRequest
0 голосов
/ 23 июля 2010

Я пытаюсь поместить холст в элемент управления, который затем буду использовать преобразование «Макет» для реализации функции масштабирования.Проблема в том, что, хотя увеличить холст легко, обрезка необходимого участка оказывается сложной.Я думаю, что это сводится к следующему примеру кода:

    <Canvas HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100">
        <Rectangle Width="5" Height="5" Canvas.Bottom="0" Canvas.Left="0" Fill="Green" />
        <Rectangle Width="5" Height="5" Canvas.Bottom="0" Canvas.Right="0" Fill="Green" />
        <Rectangle Width="5" Height="5" Canvas.Top="0" Canvas.Left="0" Fill="Green" />
        <Rectangle Width="5" Height="5" Canvas.Top="0" Canvas.Right="0" Fill="Green" />
        <Rectangle Width="5" Height="5" Canvas.Top="-10" Canvas.Right="0" Fill="Blue" />
        <Rectangle Width="5" Height="5" Canvas.Bottom="110" Canvas.Left="0" Fill="Blue" />
    </Canvas>

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

Заранее спасибо, Шейн

1 Ответ

3 голосов
/ 23 июля 2010

Используйте свойство ClipToBounds на Canvas:

<Canvas ClipToBounds="True" 
        HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100">
    <Rectangle Width="5" Height="5" Canvas.Bottom="0" Canvas.Left="0" Fill="Green" />
    <Rectangle Width="5" Height="5" Canvas.Bottom="0" Canvas.Right="0" Fill="Green" />
    <Rectangle Width="5" Height="5" Canvas.Top="0" Canvas.Left="0" Fill="Green" />
    <Rectangle Width="5" Height="5" Canvas.Top="0" Canvas.Right="0" Fill="Green" />
    <Rectangle Width="5" Height="5" Canvas.Top="-10" Canvas.Right="0" Fill="Blue" />
    <Rectangle Width="5" Height="5" Canvas.Bottom="110" Canvas.Left="0" Fill="Blue" />
</Canvas>
...