0

labelWPFアプリケーションで動的にサイズを変更する方法を知る必要があります。


この記事では、ラベルのドラッグとサイズ変更の両方を同時に達成したサンプルをすでに見つけました。コードを掘り下げて、簡単に言うとOnMouseMove、ラベルのイベント内で、マウスカーソルの形状をチェックし、それがHandドラッグを実行し、どちらかである場合は、resizing arrowsそれに応じてサイズ変更を実行することがわかりました。 。見てみな。わかるでしょ。resizing arrowsこの特定の例では、マウスをラベルの境界線に置いたときにカーソルの形状がどのように変化するかを知ることができませんでした。

それで

'ラベルの境界線にカーソルを合わせたときにマウスカーソルの形状を矢印のサイズ変更に変更する方法'を見つけるか、ラベルのサイズを動的に変更する新しいアプローチを見つける必要があります

4

1 に答える 1

1

カーソルの変更は、this.Cursorプロパティを介して行われます。

記事のコードを開いて、彼らがどのようにそれを行うかを見ました...

マウスの左ボタンがクリックされていない場合、OnMouseMoveカーソルが変更されます。

Point currentLocation = e.MouseDevice.GetPosition(wnd);
       ......
       ......
const int dragHandleWidth = 3;

var bottomHandle = new Rect(0, height - dragHandleWidth, width, dragHandleWidth);
var rightHandle = new Rect(width - dragHandleWidth, 0, dragHandleWidth, height);

Point relativeLocation = wnd.TranslatePoint(currentLocation, this);

if (rightHandle.Contains(relativeLocation))
{
    this.Cursor = Cursors.SizeWE;
}
else if (bottomHandle.Contains(relativeLocation))
{
    this.Cursor = Cursors.SizeNS;
}
else
{
    this.Cursor = Cursors.Hand;
}

つまり、現在のマウスの位置が下または右の境界線の 3 ピクセル以内にあるかどうかを確認し、そうであれば、それに応じてカーソルを変更します...

このロジックは、ニーズに合わせて簡単に変更できます....

于 2012-12-21T17:23:02.993 に答える