3
Answers

BitMap Zooming problem ??

Essam Ali

Essam Ali

17y
2.7k
1


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)