C# ile Nesneleri sürükleme

örneğin bir iskambil oyunu yapacaksınız veya başka bir proje ve bu projede mouse ile nesneleri sürüklemeniz gerekiyor... bunu yapmak için öncelikle hemen yeni bir windows forms application projesi oluşturalım;
- toolbox'dan bir picturebox nesnesini formumuza koyalım
- picturebox'a bir tane resim koyalım: picturebox'ı seçip propertiesten image yazan yere tıklayalım çıkan pencereden local resource diyelim, import butonuna tıklayıp bir resim seçelim(bir iskambil kağıdı olabilir mesela: örnek iskambil kartı)
- picturebox'ımızın SizeMode özelliğini AutoSize yapalım(ki resmimizin boyunda olsun)
- kod penceresine girip değişkenlerimizi global olarak tanımlayalım:
bool secildi = false;
int maus_yukselik, maus_sol, fark_sol, fark_yukseklik;
- mouse olayları ile ilgili kodlar:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
secildi = true;
maus_yukselik = e.Y;
maus_sol = e.X;
}
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
secildi = false;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (secildi)
{
fark_yukseklik = maus_yukselik - e.Y;
fark_sol = maus_sol - e.X;
pictureBox1.Top = pictureBox1.Top - fark_yukseklik;
pictureBox1.Left = pictureBox1.Left - fark_sol;
}
}
eğer kodları yazdığınız halde çalışmadıysa Form1.Designer.cs dosyasında picturebox ile ilgili bölüme aşağıdaki kodları ilave edin:
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
this.pictureBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);
yine olmadıysa buyrun uygulamanın solution hali:
http://rapidshare.com/files/226421334/c__nesne_surukleme.zip.html

1 yorum:

  1. birden fazla picturebox olunca ikince mouse eventinde "-e.X" metodunu birinci event de zaten kullandın gibi bir uyarı veriyor. oyun da birden fazla iskambil kağıdını haraket ettirmeye denemeye çalışıyorum.

    YanıtlaSil