在WPF C中仅显示Canvas的一部分#

时间:2013-04-05 11:44:10

标签: wpf resize wpf-controls clip

我在WPF项目中将Canvas定义为1000 x 3000px。

现在我使用Clip方法从点(0,1000)到(1000,2000)。 它将在画布的中间。 现在我想在ScrollViewer中显示它,但是有一个问题 - 我在剪切部分之前和之后有很多空间。如何将剪裁的画布对齐到顶部?

更具体:画布包含3页(1000x1000px),现在我想剪辑该中间页并对其进行操作。但在我的项目中,我想在顶部的op scrollviewer中显示一个页面。剪辑后,我得到正确的画布部分,但前后有空格。

怎么做?也许我需要使用另一种方法而不是Clip?

或者别的什么?例如,在每1000px之后拆分该画布..比如单词:)

1 个答案:

答案 0 :(得分: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>