2

->を押したときにキャンバスを右に移動したい。イベントKeyDownを設定しました。これはイベントのメソッドです

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key==Key.Right)
    {

    }
}

しかし、中に何を書くのifですか?Canvas.setLeft動作しません

 <Canvas x:Name="totle" KeyDown="Window_KeyDown">
        <Ellipse  Name="yio" Canvas.Left="40" Canvas.Top="40" Height="30" Width="30" Fill="Beige"/>
        <Line X1="40" Canvas.Left="67" Canvas.Top="51" StrokeThickness="40" Stroke="Red" Height="10" Width="45" Fill="#FFD86464" OpacityMask="Red" />
        <Rectangle Canvas.Left="20" Canvas.Top="70" Width="70" Height="20" Fill="Beige"/>
    </Canvas>
4

1 に答える 1

3

この効果を実現するには、まず aRenderTransformを使用して、canvasTranform という名前を付けます。

<Canvas x:Name="totle" KeyDown="Window_KeyDown">
    <Canvas.RenderTransform>
        <TranslateTransform x:Name="canvasTransform" />
    </Canvas.RenderTransform>
    <Ellipse  Name="yio" Canvas.Left="40" Canvas.Top="40" Height="30" Width="30" Fill="Beige"/>
    <Line X1="40" Canvas.Left="67" Canvas.Top="51" StrokeThickness="40" Stroke="Red" Height="10" Width="45" Fill="#FFD86464" OpacityMask="Red" />
    <Rectangle Canvas.Left="20" Canvas.Top="70" Width="70" Height="20" Fill="Beige"/>
</Canvas>

次に、イベント ハンドラでTranslateTransformを名前で参照し、Xプロパティを設定します。

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Right)
        {
            canvasTransform.X = 100;
        }
    }

変換を追加する場合 (右矢印を押すとキャンバスが右に移動し続ける)、X毎回プロパティに追加します。

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Right)
        {
            canvasTransform.X += 100;
        }
    }
于 2012-06-12T00:51:46.690 に答える