2010-07-23 2 views
0

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

<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> 

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

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

ответ

3

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

<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> 
+0

Отлично, ура – Shane

 Смежные вопросы

  • Нет связанных вопросов^_^