私は、Bird(デモ)をモックすることによって提供されるようなグリッド機能へのスナップが必要なビジュアルデザイナーを作成中です。Silverlightでできるだけ早く同じものを開発するのに役立つプロジェクト、ユーザーコントロール、またはリソースはありますか?
ツールボックス(リストボックス)からデザイナー画面の中央にあるキャンバスへのドラッグアンドドロップ操作を実行することができました。しかし、グリッドへのスナップとグリッド機能は、デザイナーにとって素晴らしいものです。
私は、Bird(デモ)をモックすることによって提供されるようなグリッド機能へのスナップが必要なビジュアルデザイナーを作成中です。Silverlightでできるだけ早く同じものを開発するのに役立つプロジェクト、ユーザーコントロール、またはリソースはありますか?
ツールボックス(リストボックス)からデザイナー画面の中央にあるキャンバスへのドラッグアンドドロップ操作を実行することができました。しかし、グリッドへのスナップとグリッド機能は、デザイナーにとって素晴らしいものです。
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);
}
}