2017-11-24 9 views
0

ユーザーは一連の画像からドラッグして、並べ替えのタイルデザイナであるグリッドに配置することができるWinFormアプリケーションを作成する必要があります。ドラッグ&ドロップが可能な均等な間隔のグリッド

私はTableLayoutPanelを使ってみましたが、100x100のグリッドを持っているとやや遅くなるようですが、グリッド上にタイルをドラッグできる代替方法があるかどうかは疑問でした。レイアウトを作成し、必要に応じてグリッドのサイズを拡張します。

ありがとうございます。

+0

を得ることができます、はい、すべてのタイルが同じ寸法です同じ寸法 –

+0

@GiancarloMelisとタイルです。 – MrDKOz

答えて

0

タイルが連続している場合、あなたはハイテク最初の「空のセル」

private readonly Size tileSize = new Size(200, 200); 
    private void button1_Click(object sender, EventArgs e) 
    { 
     var pb = new PictureBox(); 
     var pt = GetEmptyCell(tileSize); 
     pb.Location = pt; 
     pb.Size = tileSize; 
     Controls.Add(pb); 
    } 

    private Point GetEmptyCell(Size TileSize) 
    { 
     var ctrl = GetChildAtPoint(new Point(0, 0)); 
     if (ctrl == null && TileSize.Width < Width && TileSize.Height < Height) 
      return new Point(0, 0); 

     for (int x = 0; x < Width; x++) 
     { 
      for (int y = 0; y < Height; y++) 
      { 
       ctrl = GetChildAtPoint(new Point(x, y)); 
       if (ctrl == null && x + TileSize.Width < Width && y + TileSize.Height < Height) 
        return new Point(x, y); 

      } 
     } 

     throw new Exception("No Empty cells was found"); 
    } 
関連する問題