3
Reply

BitMap Zooming problem ??

Essam Ali

Essam Ali

Jun 18 2007 11:21 AM
2.7k


In my program i need to zoom in and zoom out alot
so
after multiple of zooming in and out the image go damage

 

and that is the code if any one have other ideas or programming hint plz help me fast

#region Zooming Methods

        /// <summary>
        /// Make the PictureBox dimensions larger to effect the Zoom.
        /// </summary>
        /// <remarks>Maximum 5 times bigger</remarks>
        
        private void ZoomIn()
        {
            
            if ( ( PicBox.Width < ( MINMAX * OuterPanel.Width ) ) &&
                ( PicBox.Height < ( MINMAX * OuterPanel.Height ) ) )
            {
                
                PicBox.Width = Convert.ToInt32 ( PicBox.Width * ZOOMFACTOR );
                PicBox.Height = Convert.ToInt32 ( PicBox.Height * ZOOMFACTOR );
                NewImage(Class1.bmp,PicBox.Width,PicBox.Height);
                PicBox.SizeMode = PictureBoxSizeMode.StretchImage;
                ZOOMINGTIMES++;
            }
        }

        /// <summary>
        /// Make the PictureBox dimensions smaller to effect the Zoom.
        /// </summary>
        /// <remarks>Minimum 5 times smaller</remarks>
        private void ZoomOut()
        {
            if ( ( PicBox.Width > ( OuterPanel.Width / MINMAX ) ) &&
                ( PicBox.Height > ( OuterPanel.Height / MINMAX ) ) )
            {
                PicBox.SizeMode = PictureBoxSizeMode.StretchImage;
                PicBox.Width = Convert.ToInt32 ( PicBox.Width / ZOOMFACTOR );
                PicBox.Height = Convert.ToInt32 ( PicBox.Height / ZOOMFACTOR );
                NewImage(Class1.bmp, PicBox.Width, PicBox.Height);
                ZOOMINGTIMES--;
            }        
        }

        #endregion

        #region Mouse events

        /// <summary>
        /// We use the mousewheel to zoom the picture in or out
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PicBox_MouseWheel(object sender, MouseEventArgs e)
        {
            if ( e.Delta < 0 )
            {
                ZoomOut();
            }
            else
            {
                 ZoomIn();
            }
        }


        private void NewImage(Bitmap bmp1, int newWidth, int newHeight)
        {
            iniImg = Class1.bmp;
            changedImg = new Bitmap(iniImg, newWidth, newHeight);
            PicBox.Image = changedImg;
            Class1.bmp = changedImg;
            g = Graphics.FromImage(changedImg);
        }





and that is the image before zooming in and out

http://www.arabteam2000-forum.com/uploads/monthly_06_2007/post-30356-1182179495.jpg
and that is after
http://www.arabteam2000-forum.com/uploads/monthly_06_2007/post-30356-1182179483.jpg


Answers (3)