2011-01-19 40 views
1

我想調整inkcanvas的寬度和高度以適合屏幕。當我調整它的大小時,寬度向右擴展並且高度向下擴展。但是,inkcanvas不適合屏幕。將inkcanvas調整爲左側和頂部的大小

我也想修復inkcanvas子元素的位置。如果我可以調整inkcanvas的大小以適合屏幕,那麼inkcanvas子元素的位置不會改變。

如何將inkcanvas調整到左側和頂部以適合屏幕?

alt text

<Canvas x:Name="Screen" > 

       <InkCanvas Name="inkcanvas" ResizeEnabled="True" 
          Width="{Binding ElementName=LayoutRoot, Path=ActualWidth}" 
         Height="{Binding ElementName=LayoutRoot, Path=ActualHeight}" 
          EditingMode="Select" ClipToBounds="False" 
        Background="Bisque" 
        SelectionChanging="OnSelectionChanging" 
        Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 

        <!-- InkCanvas' Child Elements --> 
       </InkCanvas> 
       <Canvas.RenderTransform> 
        <MatrixTransform/> 
       </Canvas.RenderTransform> 
      </Canvas> 

感謝

更新: 我把inkcanvas在網格中。它適合屏幕,但子元素的位置已更改。

我想修復紅色的矩形位置。 alt text

紅色矩形的位置不應該改變。 alt text

<Grid> 
     <InkCanvas x:Name="inkcanvas" Background="Transparent"> 
      <Rectangle Height="41" HorizontalAlignment="Left" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="69" Fill="#FFDB1111" /> 
     </InkCanvas> 
     </Grid> 

我大picure:

我的WPF應用程序包含許多照片。我可以放大/縮小畫布。我可以使用選擇工具選擇圖片。

我有帆布和inkcanvas。

  • 帆布:包含圖片和放大/縮小

  • inkcanvas:有選擇工具

如果我縮小,畫布和inkcanvas變小。

如果我使用選擇工具,我將所有圖片從畫布複製到inkcanvas。

但是,inkcanvas縮小了,如果在inkcanvas邊界之外,我不能使用選擇工具。

這就是爲什麼我想調整inkcanvas大小並修復兒童位置的原因。

+0

給我們你的xaml,我們將告訴你要改變什麼。 – 2011-01-19 07:17:46

+0

爲什麼你將高度和寬度綁定到鋪平層?一個網格會自動調整它的孩子的最大尺寸。請告訴我們更多你想要的東西。修理InkCanvas的孩子意味着什麼?修復了畫布或屏幕?你試圖完成什麼效果? – 2011-01-19 07:37:08

回答

0

從inkcanvas中刪除所有邊距並將其放入網格中。

你能解釋爲什麼這不適合你嗎?

<Grid> 
    <InkCanvas> 
    ... 
    </InkCanvas> 
</Grid> 

編輯有保留的子元素它是雙向的:

  1. 只要位置或的InkCanvas的尺寸變化相應地調整孩子的位置。這意味着你必須選擇一個固定的位置(窗口,以及屏幕,...),它決定了孩子的實際位置。
  2. 從InkCanvas取出孩子,並把它在正確的容器(確定孩子的位置之一。

我寧願#2是更符合邏輯且需要較少的計算/事件處理

+0

如果我刪除邊距並將其放在網格中,那麼inkcanvas子元素的位置會發生變化。但我想修復inkcanvas子元素的位置。 – 2011-01-19 07:33:05

0

這取決於InkCanvas周圍的容器,如果你弄亂了它們的容器,你不能指望子元素不會移動,如果你需要子元素獨立於InkCanvas行爲,你可能想重新考慮如果是一個好主意,如果你想要完成的事情不能用另一個設置更有效率地完成。

你應該告訴我們更多關於你想要達到什麼樣的大局,事實上兒童受到操縱容器的影響是可以預料到的,而且通常都是需要的。也許有一種更好的方法,比嘗試和擴大容器的規模,同時不得不轉移所有的孩子來取消這種操作。

相關問題