ボード上の紙 (メモ) をドラッグできるようにする必要がある C# でピンナップ ボードを作成しています。メモも書き込めるようにする必要があるため、メモをカスタムコントロールとして作成しました。customcontrol (メモ) の背景は、一枚の紙のイメージです。ボード自体に背景画像を使用しない場合、すべてが意図したとおりに機能します。メモ(背景画像のあるカスタムコントロール)をうまくドラッグできます-ちらつきはありません。ボード上で背景画像を使用すると (単色の背景ではうまくいかないので、やりたいのですが)、ノートをスムーズにドラッグすることができなくなりました。ドラッグを開始するとメモが消え、マウスの移動を止めると最初に再描画されます。
メモをドラッグするパネル(コンストラクター内)で次のコードを使用していますが、最初の画面のちらつきの問題を解決しただけです。
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
背景に使用される画像ファイルは、プロジェクト リソースにインポートされます。画像ファイルをビットマップ オブジェクトに読み込んで、このオブジェクトをパネルの背景画像として使用しようとしましたが、何も変わりませんでした。
ドラッグ時のメモの外観のイメージへのリンクの下:
http://i.stack.imgur.com/9LnKj.jpg
ドラッグを開始したときにメモが実際にどのように見えるかを示す画像の下:
http://i.stack.imgur.com/x0Lf1.png
私の問題を解決するために、さらに詳しい情報が必要かどうかお尋ねください。問題が何であるかについてのヘルプと提案は非常に高く評価されています! 前もって感謝します。
編集: 2 番目の画像のメモのサイズは、最初の点からどれだけドラッグしたかによって異なります。そのサイズよりも遠くにドラッグすると、メモを完全に消すことができます。マウスの動きを止めると再描画されます。
編集:メモを移動するには、次のコードを使用します。
private void NoteControl_MouseMove(object sender, MouseEventArgs e)
{
if (_dragme)
{
System.Drawing.Point newLocation = e.Location - mouseOffset;
this.Left += newLocation.X;
this.Top += newLocation.Y;
}
}