我正在创建一个视觉设计器,我需要像 mocking Bird ( Demo ) 提供的 snap to grid 功能。是否有任何项目、用户控件或资源可以帮助我尽快在 Silverlight 中开发相同的内容。
我已经能够完成从工具箱(Listbox)到设计器屏幕中心的画布的拖放操作。但是在设计器中具有网格和网格功能的对齐功能非常棒。
我正在创建一个视觉设计器,我需要像 mocking Bird ( Demo ) 提供的 snap to grid 功能。是否有任何项目、用户控件或资源可以帮助我尽快在 Silverlight 中开发相同的内容。
我已经能够完成从工具箱(Listbox)到设计器屏幕中心的画布的拖放操作。但是在设计器中具有网格和网格功能的对齐功能非常棒。
在您的 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);
}
}