none
将棋のように、コマを動かすゲームをWPFで作ろうとしています。 RRS feed

  • 質問

  • いつもお世話になります。
    VisualC#2010、WindowsXP, WPFでの動作について質問があります。
    将棋のように、コマを動かすゲームをWPFで作ろうとしています。
    コマはImageに配置し、位置を設定するために、canvasに乗せました。
    さらにそのcanvasをcanvasに乗せています。

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Name="window">
        <Canvas Name="allcanvas" MouseLeftButtonDown="image1_MouseLeftButtonDown" MouseMove="image1_MouseMove" MouseUp="image1_MouseUp" >
            <Canvas Name="imagecanvas" Height="100" Width="150" MouseLeave="allcanvas_MouseLeave">
                <Image Height="100" HorizontalAlignment="Left" Margin="126,56,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="150"
                       Canvas.Left="-126" Canvas.Top="-56"
                       Source="001.jpg" MouseUp="image1_MouseUp" />
            </Canvas>
        </Canvas>
    </Window>

    private Point startPoint;
    private bool IsDragging;
    private void image1_MouseMove(object sender, MouseEventArgs e){
     if (IsDragging) {
      Point movePoint = e.GetPosition(this);
      Canvas.SetLeft(imagecanvas, movePoint.X - startPoint.X);
      Canvas.SetTop(imagecanvas, movePoint.Y - startPoint.Y);
     }
    }

    private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
     startPoint = e.GetPosition(this);
     IsDragging = true;
    }

    private void image1_MouseUp(object sender, MouseButtonEventArgs e) {
     if (IsDragging) IsDragging = false;
    }

    これで、右方向にはドラッグできるのですが、左方向にはできずにいます。
    どのようにしたらよいか、アドバイスお願いします。

    2010年11月13日 8:03

回答

すべての返信