1

私は、Bird(デモ)をモックすることによって提供されるようなグリッド機能へのスナップが必要なビジュアルデザイナーを作成中です。Silverlightでできるだけ早く同じものを開発するのに役立つプロジェクト、ユーザーコントロール、またはリソースはありますか?

ツールボックス(リストボックス)からデザイナー画面の中央にあるキャンバスへのドラッグアンドドロップ操作を実行することができました。しかし、グリッドへのスナップとグリッド機能は、デザイナーにとって素晴らしいものです。

4

1 に答える 1

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);
    }
} 
于 2012-08-14T09:45:08.203 に答える