私は自分のエディタでWPFフォームを作成しています。私の問題は、複数のコントロール(ボタン、ラベルなど)を選択し、それらをメインウィンドウ全体にスムーズにドラッグする最悪の時間を抱えていることです。私のアプリケーションは、私がドラッグすると、ああ、20の選択されたボタンを同時にしようとするとチョークします。複数の四角形を描画するとWPFアプリケーションがチョークする
私は、オブジェクトがドラッグされているときに複数の矩形を描画しており、この関数がMouseMoveイベントで呼び出されているという事実を発見しました。
void ControlObjectControl_MouseMove(object sender, MouseEventArgs e)
{
if (newPosition != oldPosition)
{
DragSelection(newPosition);
}
}
private void DragSelection(Point newPosition)
{
foreach (FrameworkElement item in designer.SelectionService.CurrentSelection)
{
if (item is ObjectControl)
(item as ObjectControl).m_ParentControlObject.Position = new System.Drawing.Rectangle() { X = X, Y = Y, Width = (int)item.Width, Height = (int)item.Height };
//..There's code that calculates the item's position and dimensions
}
}
は、どのように私はそれが一度だけの四角形を描画する場所にそれを作るのですか、私はまだ私の選択したオブジェクト(複数可)、私はそれらをドラッグするとスムーズに移動を見ることができるのですか?
WPFはDirectXを使用しています。本当に深く掘り下げなくてもできることはありません。透明なパネルを作成し、選択したすべてのコントロールを追加してから、各コントロールの代わりにパネルを移動し、mouseupのときにフォームにダンプすることができます。私は正直なところ、VS /他の人がどのようにしているかに精通していませんが、それはおそらくどこから始めるのでしょうか(誰かが組み込みのソリューションを持っていない限り)。しかし、それは困難な/論理的な集約を作るかもしれません。 – Aaron
@Aaronはいそうです。私はディスパッチャを使ってみましたが、バックグラウンドでコードを実行させましたが、それはちょうどドラッグ機能を奇妙にしました。私はこの問題をさらに調べます。私の最初の反応でありがとう。 – user3838697