PDA

View Full Version : سوال: zoom عکس با موس



armiin
جمعه 23 مهر 1389, 22:20 عصر
با سلام !

من در برنامه ام احتیاج به zoom مثل Windows Picture ویندوز دارم (منظورم zoom کردن با Mouse ) .
برای این کار یک PictureBox را در یک Panel گذاشتم و Dock آن را Fill کردم ، تو رویداد MouseClick - PictureBox هم کد زیر را نوشتم



panel1.AutoScrollMinSize = new Size((int)(m_Bitmap_Width * 2), (int)(m_Bitmap_Height * 2));
m_Bitmap_Width = m_Bitmap_Width * 2;
m_Bitmap_Height = m_Bitmap_Height * 2;
panel1.SetAutoScrollMargin(e.Location.X, e.Location.X);
m_Bitmap_Width و m_Bitmap_Height عرض و طول عکس هستند .
مشکل کار اینجاست که Scroll پنل تغییری نمیکند یعنی در خط آخر کدم باید مشکلی وجود داشته باشد :ناراحت:
مثل zoom ویندوز که شما وقتی قسمت پایین عکس را zoom میکنید بزرگنمایی عکس به سمت پایین میرود !

flash118
جمعه 23 مهر 1389, 22:23 عصر
دوست عزیز یه سری هم اینجا بزن دیدنش خالب از لطف نیست
لینک:http://www.codeproject.com/KB/graphics/PanZoom2.aspx

armiin
جمعه 23 مهر 1389, 23:15 عصر
ممنون دوست عزیز ، من قبل از این که تاپیکو بزنم اینو دیده بودم ولی دانلود نکرده بودم ، خیلی کدش گیج کنندست !
الان دانلود هم کردم ، بازم سر در نیاواردم :خجالت:
مشکل اینجاست من دقیقا میخوام مثل ویندوز با کلیک zoom کنه و یک مشکل دیگه ای که این برنامه داشت در مورد عکس های بزرگ ،اونارو Fit اون Panel برنامه نکرده و بعد از Open کردن عکس از Panel میزد بیرون و کاربر باید اول Zoom out کنه تا کامل عکس ببینه !

syntiberium
شنبه 24 مهر 1389, 00:22 صبح
این کد شاید به دردت بخوره


private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
pictureBox1.Top -= pictureBox1.Height/2;
pictureBox1.Left -= pictureBox1.Width/2;
pictureBox1.Width *= 2;
pictureBox1.Height *= 2;


}

if (e.Button == MouseButtons.Right)
{

pictureBox1.Width /= 2;
pictureBox1.Height /= 2;
pictureBox1.Top += pictureBox1.Height / 2;
pictureBox1.Left += pictureBox1.Width / 2;
}
}

armiin
شنبه 24 مهر 1389, 02:05 صبح
ممنون از کدتون
هم توی پنل (البته با دستکاری در Scroll پنل )هم picturebox جدا از پنل امتحان کردم ، در همه ی حالت ها فقط در یک نقطه zoom میکند !!! :ناراحت:
خودتون تست کردید هم همین طور بود ؟

syntiberium
شنبه 24 مهر 1389, 02:11 صبح
خوب اونجوری دیگه الگوریتمش سخت می شه و احتمالا باید به همون پست 2 این تاپیک مراجعه کنید .
این کدی که من نوشتم اگه دقت کنید زمانی که picturebox بزرگ می شه top و left ش به سمت عقب می ره تا یه جورایی بهتر جلوه کنه .