امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تغییر اندازه picturebox
نویسنده پیام
ardavan4816 آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 7
تاریخ عضویت: اسفند ۱۳۸۷

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #1
تغییر اندازه picturebox
با سلام
من توی برنامم وقتی اجرا میشه باید کاربر بتونه عکسی رو که باز می کنه تغییر اندازه بده تونستم به وسیله دوتا تکس باکس عددهای رو بگیرم و بازدن دکمه تغییر اندازه اندازه رو تغییر بدم ولی دوست دارم کاربر بتونه تغییر اندازه رو با موس انجام بده .
ممنون میشم اگه کسی راهنمایی کنه ؟
در ضمن 1 برنامه با vb پیدا کردم در همین رابطه که کانورتشو به سی شارپ بلد نیستم . ولی براتون میگذارم شایید بدرد بخوره !!!!!!


فایل‌(های) پیوست شده
.zip   ResizableDemo.zip (اندازه: 122.7 KB / تعداد دفعات دریافت: 89)
۰۲-مرداد-۱۳۸۸, ۲۰:۱۶:۴۴
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #2
RE: تغییر اندازه picturebox
بفرما این همون کلاسه:

کد:
public class ResizeableControl
    {

        private Control mControl;
        private bool mMouseDown = false;
        private EdgeEnum mEdge = EdgeEnum.None;
        private int mWidth = 4;
        private bool mOutlineDrawn = false;

        private enum EdgeEnum
        {
            None,
            Right,
            Left,
            Top,
            Bottom,
            TopLeft
        }

        public ResizeableControl(Control Control)
     {
         mControl = Control;
         mControl.MouseDown += new MouseEventHandler(this.mControl_MouseDown);
         mControl.MouseUp += new MouseEventHandler(this.mControl_MouseUp);
         mControl.MouseMove += new MouseEventHandler(this.mControl_MouseMove);
         mControl.MouseLeave += new System.EventHandler(this.mControl_MouseLeave);
     }
        private void mControl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mMouseDown = true;
            }
        }
        private void mControl_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            mMouseDown = false;
        }
        private void mControl_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Control c = (Control)sender;
            Graphics g = c.CreateGraphics();

            switch (mEdge)
            {
                case EdgeEnum.TopLeft:
                    g.FillRectangle(Brushes.Fuchsia, 0, 0, mWidth * 4, mWidth * 4);
                    mOutlineDrawn = true;
                    break;
                case EdgeEnum.Left:
                    g.FillRectangle(Brushes.Fuchsia, 0, 0, mWidth, c.Height);
                    mOutlineDrawn = true;
                    break;
                case EdgeEnum.Right:
                    g.FillRectangle(Brushes.Fuchsia, c.Width - mWidth, 0, c.Width, c.Height);
                    mOutlineDrawn = true;
                    break;
                case EdgeEnum.Top:
                    g.FillRectangle(Brushes.Fuchsia, 0, 0, c.Width, mWidth);
                    mOutlineDrawn = true;
                    break;
                case EdgeEnum.Bottom:
                    g.FillRectangle(Brushes.Fuchsia, 0, c.Height - mWidth, c.Width, mWidth);
                    mOutlineDrawn = true;
                    break;
                case EdgeEnum.None:
                    if (mOutlineDrawn)
                    {
                        c.Refresh();
                        mOutlineDrawn = false;
                    }

                    break;
            }

            if (mMouseDown & mEdge != EdgeEnum.None)
            {
                c.SuspendLayout();
                switch (mEdge)
                {
                    case EdgeEnum.TopLeft:
                        c.SetBounds(c.Left + e.X, c.Top + e.Y, c.Width, c.Height);
                        break;
                    case EdgeEnum.Left:
                        c.SetBounds(c.Left + e.X, c.Top, c.Width - e.X, c.Height);
                        break;
                    case EdgeEnum.Right:
                        c.SetBounds(c.Left, c.Top, c.Width - (c.Width - e.X), c.Height);
                        break;
                    case EdgeEnum.Top:
                        c.SetBounds(c.Left, c.Top + e.Y, c.Width, c.Height - e.Y);
                        break;
                    case EdgeEnum.Bottom:
                        c.SetBounds(c.Left, c.Top, c.Width, c.Height - (c.Height - e.Y));
                        break;
                }
                c.ResumeLayout();
            }
            else
            {
                if (e.X <= (mWidth * 4) & e.Y <= (mWidth * 4)){
                        //top left corner
                        c.Cursor = Cursors.SizeAll;
                        mEdge = EdgeEnum.TopLeft;
                }else if (    e.X <= mWidth){
                        //left edge
                        c.Cursor = Cursors.VSplit;
                        mEdge = EdgeEnum.Left;
                }else if (    e.X > c.Width - (mWidth + 1)){
                        //right edge
                        c.Cursor = Cursors.VSplit;
                        mEdge = EdgeEnum.Right;
                }
                else if (e.Y <= mWidth)
                {
                        //top edge
                        c.Cursor = Cursors.HSplit;
                        mEdge = EdgeEnum.Top;
                }else  if (   e.Y > c.Height - (mWidth + 1)){
                        //bottom edge
                        c.Cursor = Cursors.HSplit;
                        mEdge = EdgeEnum.Bottom;
                }else{
                        //no edge
                        c.Cursor = Cursors.Default;
                        mEdge = EdgeEnum.None;
                
                }
            }
        }
        private void mControl_MouseLeave(object sender, System.EventArgs e)
        {
            Control c = (Control)sender;
            mEdge = EdgeEnum.None;
            c.Refresh();
        }

    }

فقط کافیه مثلا توی لود فرم یا سازندهش مینویسید :
کد:
ResizeableControl rc = new ResizeableControl(button1);

میزان رای دشمن است!
[تصویر:  cff100.png]
۰۲-مرداد-۱۳۸۸, ۲۱:۱۴:۳۶
وب سایت ارسال‌ها
پاسخ
ardavan4816 آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 7
تاریخ عضویت: اسفند ۱۳۸۷

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: تغییر اندازه picturebox
ممنون .جواب داد
۰۴-مرداد-۱۳۸۸, ۱۰:۳۸:۵۶
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ایجاد تغییر در ساختار پایگاه داه نصب شده رو سیستم کاربر taksa2012 1 2,993 ۳۰-آذر-۱۳۹۲, ۱۸:۲۷:۰۰
آخرین ارسال: Ghoghnus
  تغییر ساختار پایگاه داده در نگارش جدید taksa2012 0 1,933 ۰۲-آذر-۱۳۹۲, ۰۳:۱۴:۳۵
آخرین ارسال: taksa2012
  [سوال] تغییر گرافیک paint doooste_2002 5 3,555 ۱۱-مهر-۱۳۹۲, ۲۰:۴۳:۵۵
آخرین ارسال: ترانسپورتر
  [سوال] تغییر پرمیشن فایل ها Ghoghnus 1 2,654 ۰۳-تير-۱۳۹۲, ۱۰:۲۱:۰۷
آخرین ارسال: bitaroos
  تغییر سایز کریستال بعد از تغییر پرینتر Payman62 1 3,412 ۱۶-مهر-۱۳۹۰, ۱۴:۲۴:۲۳
آخرین ارسال: Payman62
  تغییر سایز عکس بدون افت کیفیت Payman62 0 2,955 ۲۲-مرداد-۱۳۹۰, ۱۶:۲۸:۱۱
آخرین ارسال: Payman62
Exclamation هم اندازه کردن کنترلها در زمان طراحی sayvan 0 1,834 ۳۰-تير-۱۳۹۰, ۱۲:۳۷:۱۴
آخرین ارسال: sayvan
  تغییر اندازه ستونها در دیتاگرید ویو hamidsina 1 5,454 ۰۳-آبان-۱۳۸۸, ۲۳:۵۰:۴۷
آخرین ارسال: ajlajlajl
  تغییر خاصیت کنترل با دستور تکرار hamidsina 5 5,379 ۱۷-مهر-۱۳۸۸, ۲۰:۱۰:۰۷
آخرین ارسال: ajlajlajl
  تغییر زبان در TextBox hamidsina 1 3,579 ۱۲-مهر-۱۳۸۸, ۰۹:۴۶:۵۶
آخرین ارسال: ajlajlajl

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS