画布在状态栏上绘制

时间:2015-08-05 23:26:41

标签: c# wpf canvas

我制作了一个根据用户输入绘制形状的程序。我现在只能画一个圆圈。当我绘制圆时,其半径基于x位移,并且不依赖于y。这意味着我可以制作比可用窗口大小更大的形状。当我这样做时,它会覆盖状态栏,如下所示:

enter image description here

知道如何解决这个问题吗?这是XAML的结构

<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="File">
            <MenuItem Header="New"></MenuItem>
            <MenuItem Header="Open"></MenuItem>
            <MenuItem Header="Save"></MenuItem>
            <Separator/>
            <MenuItem Header="Exit" Click="MenuItem_Click"></MenuItem>
        </MenuItem>
    </Menu>
    <StatusBar x:Name="status" DockPanel.Dock="Bottom" Height="22">
        <TextBlock x:Name="statusText"></TextBlock>
    </StatusBar>
    <DockPanel>
        <StackPanel DockPanel.Dock="Left">
            <StackPanel.Background>
                <SolidColorBrush Color="#EEE"></SolidColorBrush>
            </StackPanel.Background>
            <Button Padding="3,0" Margin="5" Click="CircleButton_Click">Circle</Button>
        </StackPanel>
        <Canvas Background="White"  x:Name="canvas" MouseLeftButtonDown="CanvasDownHandler" MouseMove="CanvasMoveHandler" MouseLeftButtonUp="CanvasUpHandler">

        </Canvas>
    </DockPanel>
</DockPanel>

2 个答案:

答案 0 :(得分:1)

您应该为画布设置ClipToBounds = true,如下所示:

Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory

这可以确保画布内的元素不会在画布本身之外绘制

答案 1 :(得分:0)

如果我理解正确,只需更改此行:

<StatusBar x:Name="status" DockPanel.Dock="Bottom" Height="22" Panel.ZIndex="100">

Panel.ZIndex =&#34; 100&#34;是告诉绘画画布顺序的属性。