بهار آموزش با تخفیف های شگفت انگیز توسینسو بهار آموزش با تخفیف های شگفت انگیز توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

انجام نشدن عمل undo & redo در برنامه گرافیکی

مشکل این تکه کد چیه که عمل undo & redo انجام نمیشه . (کد های زیر قسمتی از یک برنامست که اینجا کپی کردم )

سپاس

 private Stack<Image> _undostack = new Stack<Image>();
        private Stack<Image> _redostack = new Stack<Image>();

 public void undo()
        {
           
                if (_undostack.Count > 0)
                {
                    _redostack.Push(_undostack.Pop());
                    pictureBox1.Image = _redostack.Peek();
                    pictureBox1.Refresh();
                }

            

        }
        public void redo()
        {
       
                if (_redostack.Count > 0)
                {
                    _undostack.Push(_redostack.Pop());
                    pictureBox1.Image = _undostack.Peek();
                    pictureBox1.Refresh();

                }
            
        }


  private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {

               Graphics g = Graphics.FromImage(bmp);
               Pen p = new Pen(currentcolor, drawingsize);
               SolidBrush brush = new SolidBrush(Color.White);
               if (act == "pen")
               {
                   if (e.Button == MouseButtons.Left)
                   {
                       g.DrawLine(p, x, y, e.X, e.Y);
                       x = e.X;
                       y = e.Y;

                   }
                   x = e.X;
                   y = e.Y;
                   pictureBox1.Image = bmp;
                   _undostack.Push(pictureBox1.Image);
               }

 private void undoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            undo();
            redoToolStripMenuItem.Enabled = true;
            undoToolStripMenuItem.Enabled = false;         
        }


        private void redoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            redo();
            redoToolStripMenuItem.Enabled = false;
            undoToolStripMenuItem.Enabled = true;
            
        }

پرسیده شده در 1394/09/21 توسط

7 پاسخ

1

مرسی داداش . زحمت کشیدی . از استادمون میپرسم بینم اون چی میگه . جوابو اعلام میکنم

پاسخ در 1394/09/22 توسط
1

اگه تا به حال با پشته کار نکردی یه برنامه کوچیک از پشته رشته ای امتحان کن ببین مشکل از نحوه استفاده از stack نباشه

پاسخ در 1394/09/22 توسط
1

راستش من هم شک دارم میشه image رو توی پشته گذاشت یا نه واسه همین گفتم خیلی سرچ زدم انگلیسی تا یه مثال از پشته image پیدا کنم اما پیدا نشد.

پاسخ در 1394/09/22 توسط
1

نمیشه به جای image از نوع داده Bitmap استفاده کنید؟ شاید دزست بشه

و یه سوال اینکه برنامه هیچ خطایی تولید نمی کنه؟

پاسخ در 1394/09/21 توسط
0

آیا میشه image رو توی پشته قرار داد؟؟ من اصلا توی سی شارپ با پشته کار نکردم . چیزی ازش بلد نیستم

پاسخ در 1394/09/21 توسط
0

منظورتون اینه که bitmap رو توی پشته push کنم؟؟ این کارو کردم باز هیچ عکس العملی نشون نداد . برنامه هم هیچ خطایی تولید نمیکنه . برنامه paint هستش و همه قسمتاش کاملا درست کار میکنه به جز این undo & redo

پاسخ در 1394/09/21 توسط
0

آره حتما اعلام کن دوست دارم بدونم

پاسخ در 1394/09/22 توسط

پاسخ شما