Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // A custom control holds the image
- this.m_ZoomPanPicBox.Image = new Bitmap(szImagePath);
- class ZoomPanPicBox : ScrollableControl
- {
- Image m_image;
- float m_zoom = 1.0f;
- InterpolationMode m_interpolationMode;
- ...
- ////////////////////////////////////////////////////////
- public ZoomPanPicBox()
- {
- //Double buffer the control
- this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.ResizeRedraw | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
- this.AutoScroll=true;
- }
- ////////////////////////////////////////////////////////
- protected override void OnPaint(PaintEventArgs e)
- {
- //if no image, don't bother
- if(m_image==null)
- {
- base.OnPaintBackground(e);
- return;
- }
- //Set up a zoom matrix
- Matrix mx = new Matrix(m_zoom,0,0,m_zoom,0,0);
- //now translate the matrix into position for the scrollbars
- mx.Translate(this.AutoScrollPosition.X / m_zoom, this.AutoScrollPosition.Y / m_zoom);
- //use the transform
- e.Graphics.Transform = mx;
- //and the desired interpolation mode
- e.Graphics.InterpolationMode = m_interpolationMode;
- //Draw the image ignoring the images resolution settings.
- e.Graphics.DrawImage(m_image,new Rectangle(0,0,this.m_image.Width,this.m_image.Height),0,0,m_image.Width, m_image.Height,GraphicsUnit.Pixel);
- base.OnPaint(e);
- }
Add Comment
Please, Sign In to add comment