2012-08-14 129 views
1

我正在創建一個可視化設計器,爲此我需要捕捉網格功能,如嘲笑Bird(Demo)提供的功能。有沒有任何項目,用戶控件或資源可以幫助我儘可能快地在silverlight中開發相同的項目。Silverlight對齊網格

我已經能夠完成從工具箱(Listbox)到設計器屏幕中心的畫布的拖放操作。但是對設計師來說,捕捉網格和網格功能非常棒。

回答

0

在您的MouseMove例程中,您需要執行額外的調整以允許捕捉。

void MainImage_MouseMove(object sender, MouseMoveEventArgs args){ 

    // ... assume you have calculated newX and newY already 

    adjustSnap(ref newX, ref newY); 

    // ... position your element 

} 

bool _isSnapOn = true; 

void adjustSnap(ref double x, ref double y) 
{ 
    const double gridWidth = 100; 
    const double gridHeight = 100; 

    if (_isSnapOn) 
    { 

     if (x % gridWidth < gridWidth/2) 
      x -= x % gridWidth; 
     else 
      x += (gridWidth - x % gridWidth); 

     if (y % gridHeight < gridHeight/2) 
      y -= y % gridHeight; 
     else 
      y += (gridHeight - y % gridHeight); 
    } 
} 
+0

邏輯似乎值得嘗試,現在將它放在工作,並得到回 – Deeptechtons 2012-08-14 09:47:45