最後に、WinFormsまたはPInvokesを使用せずにWPFの範囲内で管理しました。オンザフライでカスタムカーソル(* .cur)を作成するか、Visual
をカーソルに変換する代わりに、親コントロールのMouseMove
イベントと、WPF要素(Path
)をカーソルとして使用しました。ここで念のために誰がinteresedされる方法です:WPFは、デフォルトの矢印を表示しないように
- は、あなたのリサイズ親指(または、あなたの形状の境界として使用しているものは何でも)
None
へのCursor
を設定します。
独自のカーソルを作成します。 FrameworkElement
でもかまいませんが、私はPath
を使用して、簡単に操作して任意のシェイプを作成できました。私が下に設定したプロパティの大部分は重要であることに注意してください。
<Path x:Name="PART_EW" Data="M0,20 L25,0 25,15 75,15 75,0 100,20 75,40 75,25 25,25 25,40z" Fill="White" Stroke="Black" StrokeThickness="1" Visibility="Collapsed" Width="50" Height="20" Opacity=".7" Stretch="Fill" Panel.ZIndex="100001" HorizontalAlignment="Left" VerticalAlignment="Top" IsHitTestVisible="False" />
あなたのリサイズ親指に次のコードを追加します。それは、すでにの一部ですので、私は、どこかのコードで私のPath
のRotateTransform
を設定していたこと
protected override void OnMouseEnter(MouseEventArgs e)
{
base.OnMouseEnter(e);
var Pos = e.GetPosition(this);
PART_EW.Margin = new Thickness(
Pos.X - PART_EW.Width/2,
Pos.Y - PART_EW.Height/2,
-PART_EW.Width,
-PART_EW.Height);
PART_EW.Visibility = Visibility.Visible;
}
protected override void OnMouseLeave(MouseEventArgs e)
{
base.OnMouseLeave(e);
PART_EW.Visibility = Visibility.Collapsed;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
var Pos = e.GetPosition(designerItem);
PART_EW.Margin = new Thickness(
Pos.X - PART_EW.Width/2,
Pos.Y - PART_EW.Height/2,
-PART_EW.Width,
-PART_EW.Height);
}
注意をリサイズサムを取得し、親コントロールの角度を自動的に取得します。
これは、人々が道路を下るのを助けてくれることを願っています。
[回転したテキストボックスに応じた回転カーソル]の複製の可能性があります(http://stackoverflow.com/questions/2835502/rotating-cursor-according-to-rotated-textbox) –
@FirstStep:その回答のコメントそのコードにはいくつかのエラーがあります。さらに、WinFormsライブラリを使用します。それ以外の方法がない限り避けたいものがあります。 – dotNET
私にとって、それは2つの質問の間の合理的な区別です。私はこれを複写として閉じなければならないとは思わない。 – arbitrarystringofletters