我的Windows窗體應用程序中有兩個pictureboxes。這些照片箱中的每一個都有一個圖像。 pictureBox1很小,只有122 x 52,而pictureBox2更大(459 x 566)。我想要做的就是將picturebox1的圖像拖放到picturebox2上,並創建並保存一個新圖像。無論哪個x & y座標我放置pictureBox1的圖像,它會將它「標記」在pictureBox2中的該位置。然後pictureBox2的圖像將被修改並保存。所以只需簡單地拖放,用戶應該能夠輕鬆地將圖像「印記」到pictureBox2上。這可能嗎?如何在C#中的另一個圖片框中的另一個圖片框中的另一圖片框中拖放一個圖像?
0
A
回答
0
Snrub先生,
如果使用拖放,你是在你想要做的事情的控制。通常,在控件的MouseDown事件中,您可以確定dragevent是否正在啓動。我保留一個表單屬性。
private Point _mouseDownPoint;
我設置在從控制的MouseDown
protected override void OnMouseDown(MouseEventArgs e)
{
_mouseDownPoint = e.Location;
}
期間的阻力。在該相同控制的OnMouseMove事件。此代碼可確保用戶最有可能嘗試拖動並開始拖動。這段代碼來自usercontrol,所以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事件進行編碼。這裏我們有一個DragEnter事件,它區分了ToolStripButton和自定義的UserControl DSDPicBox。沒有編碼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;
}
}
我已經從代碼中刪除了一些項目,這些代碼只是渾濁了水域。此代碼可能無法正常工作,但應該讓您靠近。
問候, 馬克
相關問題
- 1. Vb.net將圖片框中的圖片移動到另一個圖片框
- 2. 在另一個圖片框上透明圖片框
- 3. 將圖像從圖片框移動到另一個圖片的另一個圖片盒
- 4. 將圖片框內的圖片移動到另一個圖片框
- 5. 了JavaFx拖放圖片從一個圖像視圖到另一個
- 6. 在Objective-C中掃描另一張圖片中的圖片
- 7. 如何在另一圖像中播放圖像幻燈片?
- 8. 試圖改變一個圖片框c#
- 9. 打開一個圖片點擊另一個圖片等等
- 10. 如何在一個片段中充氣另一個視圖?
- 11. 將一個圖像放在android中的另一個圖像上
- 12. 製作一組圖片框,每個圖片框都有不同的圖像
- 13. CSS - 將另一張圖片重疊在另一張圖片上
- 14. 拖放一個.PNG圖像在JavaScript中超過另一個
- 15. 在Android中將另一個片段滑過另一個片段
- 16. 顯示一個PNG圖片在另一.JPG圖像
- 17. 如何在HTML中將圖片放在另一張圖片的頂部?
- 18. 從另一個圖像中減去另一個圖像
- 19. 如何從一個URL的所有圖像到C#中的圖片框?
- 20. vb.net集圖像,圖片框一個接一個
- 21. Android,如何將圖片放在另一張圖片上?
- 22. 如何將一張圖片重疊在另一張圖片上?
- 23. 如何在HTML中將一個圖像放在另一個圖像的頂部?
- 24. 在一個標籤中上傳圖片=我的網站不會在另一個標籤中打開圖片 - chrome
- 25. Android片段 - 從一個視圖移動到另一個視圖?
- 26. 如何在另一張圖片的頂部添加圖片?
- 27. 在另一個片段中更改ImageView圖像。 Android
- 28. 如何從另一課程訪問窗體上的圖片框?
- 29. C#在多個圖片框中隨機化多個圖像
- 30. C中的圖片框#
Pictureboxes是對照。他們包含的圖像是別的東西。你將不得不將第二個圖像繪製到第一個圖像上。 – Plutonix
這很好,但是有沒有辦法獲得放置圖像的位置的座標?我假設我在DragDrop或DragEnter事件中的代碼隱藏中創建新圖像? – MrSnrub