私はWindowsフォームアプリケーションに2つのピクチャボックスを持っています。これらのピクチャボックスはそれぞれイメージを保持します。 pictureBox1は小さく、122×52しかなく、pictureBox2ははるかに大きい(459×566)。私がしたいことは、picturebox1の画像をpicturebox2にドラッグアンドドロップして新しい画像を作成して保存できることです。 Wheelyver x & y座標私はpictureBox1の画像を置くと、pictureBox2のその位置で右に "スタンプ"します。そして、pictureBox2の画像は変更され、保存されます。ドラッグアンドドロップするだけで、ユーザーは画像をpictureBox2に簡単に「スタンプ」できるはずです。これは可能ですか?C#の別の画像ボックスにある画像ボックスの画像ボックスにある画像をドラッグアンドドロップする方法は?
0
A
答えて
0
Mr Snrub、
ドラッグドロップを使用すると、あなたは何をしたいのかを制御します。一般的に、コントロールのMouseDownイベントでは、ドラッグイベントが開始されているかどうかを判断します。私はフォームのプロパティを保持します。
private Point _mouseDownPoint;
私のMouseDown
同じ制御用ONMOUSEMOVE場合にprotected override void OnMouseDown(MouseEventArgs e)
{
_mouseDownPoint = e.Location;
}
中制御からドラッグでいることを設定します。このコードは、ユーザーがドラックドをドラッグしようとする可能性が最も高いことを保証します。このコードはユーザコントロールから来ているので、DoDragDropのこれをあなたのケースで変更する必要があるかもしれません。ドロップを受け取ることができる
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button != MouseButtons.Left) return;
var dx = e.X - _mouseDownPoint.X;
var dy = e.Y - _mouseDownPoint.Y;
if (Math.Abs(dx) > SystemInformation.DoubleClickSize.Width || Math.Abs(dy) > SystemInformation.DoubleClickSize.Height)
{
DoDragDrop(this, DragDropEffects.Move);
}
}
あなたのコントロール(複数可)自分のDragEnterイベントは、コード化されている必要があります。ここでは、ToolStripButtonとカスタムUserControl DSDPicBoxを区別するDragEnterイベントがあります。 DragEnterイベントがコード化されていないコントロールは、ドラッグされたときにnoDropアイコンを表示します。
private void Control_DragEnter(object sender, DragEventArgs e)
{
var button = e.Data.GetData(typeof(ToolStripButton)) as ToolStripButton;
if (button != null)
{
e.Effect = DragDropEffects.Copy;
return;
}
var element = e.Data.GetData(typeof(DSDPicBox)) as DSDPicBox;
if (element == null) return;
e.Effect = DragDropEffects.Move;
}
最後に、ドロップを処理する必要があります。 panelDropPointは、アイテムがドロップされた場所の座標です。新しいグラフィックを古いものに置き換えることができます。サイズを変更する場合は、新しい解像度で画像をレンダリングする必要があります。
private void panel_DragDrop(object sender, DragEventArgs e)
{
// Test to see where we are dropping. Sender will be control on which you dropped
var panelDropPoint = sender.PointToClient(new Point(e.X, e.Y));
var panelItem = sender.GetChildAtPoint(panelDropPoint);
_insertionPoint = panelItem == null ? destination.Controls.Count : destination.Controls.GetChildIndex(panelItem, false);
var whodat = e.Data.GetData(typeof(ToolStripButton)) as ToolStripButton;
if (whodat != null)
{
//Dropping from a primitive button
_dropped = true;
whodat.PerformClick();
return;
}
}
私は水から泥をかくだけのコードからいくつかの項目を削除しました。このコードはうまく動作しないかもしれませんが、あなたを近づけるべきです。
よろしくお願いいたします。 Marc
関連する問題
- 1. C#1つの画像ボックスを別の画像ボックスにドラッグ&ドロップ
- 2. 画像の画像ボックスによる画像パスURL
- 3. C#マルチページビューア画像ボックス
- 4. 画像ボックスに画像の縮尺を表示する方法
- 5. 画像ボックスの下にある画像の座標を取得する方法
- 6. ビットマップから画像ボックスに画像を入れる方法
- 7. 画像からdatagridviewから画像ボックス
- 8. 画像ボックス画像を消去するには?
- 9. バイトボックスを画像ボックスにロード
- 10. C#リストで画像を画像ボックスに追加
- 11. 動画と画像ギャラリーリンクの背後にあるボックスが、応答
- 12. C#フォームの画像ボックス内の画像を変更するには?
- 13. 画像が画像ボックスに表示されないc#
- 14. VBで画像を表示する実行時の画像ボックス
- 15. 画像ボックスを検出するエッジC#
- 16. プロフィール画像なしのボックス
- 17. vb.net winformsでSQL Serverの画像ボックスに画像を表示
- 18. 画像ボックスの画像をデータベースに保存
- 19. 非同期にURLから画像を画像ボックスにロード
- 20. パネル画像ギャラリーボックスから画像ボックスに画像を読み込む
- 21. 画像ボックスにPgm画像を読み込んでいます
- 22. ポップダウン画像記述ボックス
- 23. クリア入力ボックスonclick画像
- 24. VB.NET:ラベル対画像ボックス
- 25. マウスイベントを使用して画像ボックス内の画像を移動する方法
- 26. 画像ボックスに読み込まれた画像を消去する-c#
- 27. CSS:画像のサイズに合わせて画像にdivボックスを作成する
- 28. C# - Image Datagridビューから画像ボックス
- 29. ディレクトリから画像ボックスに一定の間隔で画像をロードする
- 30. 静的な画像ボックスで画像をシフト
ピクチャーボックスはコントロールです。そこに含まれる画像は何か他のものです。最初の画像に2番目の画像を描画する必要があります。 – Plutonix
それは問題ありませんが、画像をドロップした場所の座標を取得する方法はありますか? DragDropイベントまたはDragEnterイベントのコードビハインドで新しいイメージを作成するとしますか? – MrSnrub