我正在編寫一個紙牌遊戲,當我在做視覺部分時,我遇到了將面板內的卡從一個地方移動到另一個地方的問題,圖像保持閃爍,並在每次嘗試移動它。移動picturebox的問題
這是我的代碼.....
public partial class Form1 : Form
{
bool clicked = false;
public Form1()
{
InitializeComponent();
pictureBox1.ImageLocation = @"c:\kingHearts.png";
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
clicked = true;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (clicked)
pictureBox1.Location = e.Location;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
clicked = false;
}
}
那麼,什麼是錯的,任何人都可以幫助PLZ ....
Thanx BillW它的工作原理。 但我還有一個想法,如果我想將卡片停靠在realeas上的其他面板上,我使用了以下內容,但是我錯過了該條件......? private void pictureBox1_MouseUp(object sender,MouseEventArgs e) if()//什麼情況應該是'contains'!! { pictureBox1.Left = panel1.Left; pictureBox1.Top = panel1.Top; } } – Waleedoo 2010-01-01 19:39:04
@Waleedoo,當鼠標上移時,在「卡片」移動之後,只有「卡片」獲得鼠標移動:您需要編寫代碼來測試哪個「卡片槽」適合。使用矩形類的'InterSectsWith方法來檢查重疊:if(pictureBox1.Bounds.IntersectsWith(panel1.Bounds)){//找到匹配}典型的策略:製作一個列表:對該列表做一個'foreach'找到它應該「卡扣」到的卡容器:如果不匹配:將卡卡回到原來的位置。 「捕捉」匹配很簡單:只需將卡片邊界設置爲匹配「插槽」的邊界即可。 –
BillW
2010-01-02 09:58:27