C#でドミノエディタを作る(DragEnter)


アニメ『神撃のバハムート VIRGIN SOUL』

絵がきれい。まるで映画のようです。一期は全部見ていないので、一期を見てから見ようと思います。

ドミノエディタの続きです。
今回はButtonをマトリクス状に配置して、ボタンダウンの座標を覚えて、ドラッグしたボタンに座標を表示してみます。

サンプルです。

using System;
using System.Drawing;
using System.Windows.Forms;

class Test : Form{
  int xlen=20;
  int ylen=16;
  int bsize=44;

  class Matrix : Button{
    public int state = 0;
    public int x;
    public int y;
  }

  Test(){
    this.Size = new Size((bsize+1)*xlen,(bsize+1)*ylen);
    Matrix[,] mat = new Matrix[xlen,ylen];
    for(int x=0;x<xlen;x++){
      for(int y=0;y<ylen;y++){
        mat[x,y] = new Matrix();
        mat[x,y].x = x;
        mat[x,y].y = y;
        mat[x,y].Parent = this;
        mat[x,y].Location = new Point(bsize*x,bsize*y);
        mat[x,y].Size = new Size(bsize,bsize);
        mat[x,y].AllowDrop = true;
        mat[x,y].MouseDown += MouseDown;
        mat[x,y].DragEnter += DragEnter;
      }
    }
  }

  new private void MouseDown(object sender, MouseEventArgs e){
    Matrix b = (Matrix)sender;
    string data = "" + b.x + "," + b.y;
    b.DoDragDrop(data, DragDropEffects.Copy | DragDropEffects.Move);
  }  

  new private void DragEnter(object sender, DragEventArgs e){
    Matrix b = (Matrix)sender;
    b.Text=(string)e.Data.GetData(typeof(String));
  }  

  [STAThread]
  public static void Main(){
    Application.Run(new Test());
  }
}

実行して、このようにドラッグすろと、

ボタンダウンの座標(ペンタブでペンで描き始めた座標)が、各ボタン上に表示されます。

コメント

タイトルとURLをコピーしました