2013-04-05 3 views
0

캔버스가 WPF 프로젝트에서 1000 x 3000px로 정의되었습니다.캔버스의 일부만 WPF로 표시 C#

이제 포인트 (0,1000)에서 (1000, 2000)까지의 클립 방법을 사용하고 있습니다. 그것은 그 캔버스의 중간에있을 것입니다. 이제 ScrollViewer에 표시하고 싶지만 문제가 있습니다. 클립 부분 앞뒤에 많은 공간이 있습니다. 클리핑 된 캔버스를 맨 위에 정렬하는 방법은 무엇입니까?

자세한 내용 : 캔버스에 3 페이지 (1000x1000px)가 포함되어 있습니다. 이제는 중간 페이지를 잘라서 조작하고 싶습니다. 하지만 내 프로젝트에서 상단 op scrollviewer 한 페이지를 표시하려면. 클리핑 후 캔버스의 정확한 부분을 얻을 수 있지만 앞뒤의 공백이 있습니다.

어떻게 만드시겠습니까? 어쩌면 내가 클립 대신 다른 방법을 사용해야합니까?

아니면 다른 무엇입니까? 예를 들어, 1000px마다 캔버스를 나눌 수 있습니다. 단어와 비슷합니다.

+0

왜 각 페이지를 별도로 ScrollViewer에 삽입하지 않습니까? – Clemens

+0

캔버스를 scrollviewer없이 원하는 것처럼 보여줄 수있는 옵션이 있습니까? – miecio1998

답변

0

다음은 내가 생각해 낸 해결책입니다. 내 캔버스를 너의 캔버스로 대체하면된다.

<Window x:Class="StackOverflow.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:StackOverflow" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <local:AllNoneCheckboxConverter x:Key="converter"/> 
     <local:ValuePointConverter x:Key="VPConverter"/> 
    </Window.Resources> 
    <Grid> 
     <ScrollViewer VerticalScrollBarVisibility="Hidden" 
         HorizontalScrollBarVisibility="Visible" 
         Width="1000" Height="1000" 
         > 
      <Canvas Width="3000" Height="1000"> 
       <Canvas.Background> 
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
         <GradientStop Color="Red" Offset="0.3"/> 
         <GradientStop Color="Blue" Offset="0.6"/> 
         <GradientStop Color="Black" Offset="1"/> 
        </LinearGradientBrush> 
       </Canvas.Background> 
      </Canvas> 
     </ScrollViewer> 
    </Grid> 
</Window> 
+0

오케이, 다른 예는 없습니까? – miecio1998

+0

내 대답에 대해 불만족스러운 점이 있습니까? 나는 그것을 개선하는 데 문제가 없지만 당신이 무엇을 찾고 있는지 잘 모르겠습니다. –

+0

그 대답에 대해 고맙습니다 user1489726, 좋은데,하지만 페이지를 스크롤하려고 할 때 첫 페이지의 일부와 다른 페이지의 일부를 볼 수 있습니다. 나는 그것을 원하지 않습니다. 어떻게 수정해야합니까? – miecio1998