PDA

View Full Version : شبیه سازی گوگل مپ با PICTUREBOX



آرادخان
سه شنبه 30 خرداد 1402, 18:50 عصر
با سلام

اگه توجه کنید وقتی که رو گوگل مپ یه لوکشین مشخص می کنیم با زوم کردن یا زوم اوت کردن موقیت اون آیکون لوکیشن تغییر نمی کنه.

با سلام

اگه توجه کنید وقتی که رو گوگل مپ یه لوکشین مشخص می کنیم با زوم کردن یا زوم اوت کردن موقیت اون آیکون لوکیشن تغییر نمی کنه

سوال:

میخام همین کار رو تو سی شارپ شبیه ساز کنم با یه پیکچر باکس

تمام کار رو انجام دادم اما وقتی زوم میکنم نمی تونم اون ایکون لوکیشن رو تو موقعیت نگه دارم

ضمنا نقشه به صورت عکس تو پیکچر باکس با قابلیت زوم لود میشه و کاربر بر روی نقاط مختلف میتونه لوکیشن بزنه

اینم عکس ها

1

https://s28.picofile.com/file/8464866568/u1.jpg

2

https://s28.picofile.com/file/8464866584/u2.jpg

3

https://s29.picofile.com/file/8464866592/u3.jpg

پرستو پارسایی
سه شنبه 30 خرداد 1402, 23:13 عصر
سلام با توجه به اینکه از نحوه کد نویسی در پروژه مذکور ضمیمه ای ارسال نکردید ، مشکل کد اصلی رو نمیشه بررسی کرد ولی شاید بتوانید از این کد ایده بگیرید .

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
; // مختصات موقعیت کلیک شده بر روی پیکچر باکس
Point clickLocation = e.Location



// ایجاد یک آبجکت لوکیشن با مختصات موقعیت کلیک شده
PictureBox locationIcon = new PictureBox();
locationIcon.BackColor = Color.Red;
locationIcon.Size = new Size(10, 10);
locationIcon.Location = clickLocation;


// اضافه کردن آبجکت لوکیشن به پیکچر باکس
pictureBox1.Controls.Add(locationIcon);
}


private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
foreach (Control ctrl in pictureBox1.Controls)
{
// بروزرسانی موقعیت Location آبجکت‌های موجود در پیکچر باکس با توجه به Zoom
int x = ctrl.Location.X;
int y = ctrl.Location.Y;
if (pictureBox1.SizeMode == PictureBoxSizeMode.Zoom)
{
double zoomFactor = Math.Min((double)pictureBox1.ClientSize.Width / (double)pictureBox1.Image.Width, (double)pictureBox1.ClientSize.Height / (double)pictureBox1.Image.Height);
x = (int)(x * zoomFactor);
y = (int)(y * zoomFactor);
}
ctrl.Location = new Point(x, y);
}
}