471,852 Members | 1,103 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,852 software developers and data experts.

GDI+ image maginfy

I've magnified an image on the form as following codes:

private void ViewForm_Paint(object
sender,System.Windows.Forms.PaintEventArgs e)
Point ulCorner = new Point( 0, 0);

private void menuZoomIn_Click(object sender, System.EventArgs e)
Graphics dc = this.CreateGraphics();
float rWidth = (float)(theImage.Width*1.5);
float rHight = (float)(theImage.Height*1.5);

The issue is how to save the image magnified to itself as the form will
AutoRedraw according to its Form_Paint event. I think the key point is how to
get the magnified image on the form.
Any solutions?
Nov 16 '05 #1
1 1801
One way to do it is to capture the magnified image that is drawn on your
form as a new image. In other words, you magnify the image and draw some
where inside the form( and you mange to do that so far ) . What you can do
then is to capture that magnified drawn image from your window form (with
the help of an API function call) , what you need to get whoever is the
positions and dimensions of the image with in your form.
This code sample would capture all the form area to a jpg image.

[System.Runtime.InteropServices.DllImportAttribute( "gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, // handle to destination DC
int nXDest, // x-coord of destination upper-left corner
int nYDest, // y-coord of destination upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
IntPtr hdcSrc, // handle to source DC
int nXSrc, // x-coordinate of source upper-left corner
int nYSrc, // y-coordinate of source upper-left corner
System.Int32 dwRop // raster operation code
Graphics g1 = this.CreateGraphics();
Image MyImage = new Bitmap(this.ClientRectangle.Width,
this.ClientRectangle.Height, g1);
Graphics g2 = Graphics.FromImage(MyImage);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, this.ClientRectangle.Width,
this.ClientRectangle.Height, dc1, 0, 0, 13369376);

What you need to do to this code is to customize it to only capture the
area where the magnified image is. Hope that helps

Mohamed Mahfouz
MEA Developer Support Center
ITworx on behalf of Microsoft EMEA GTSC

Nov 16 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Michael Kennedy [UB] | last post: by
1 post views Thread by Paul E Collins | last post: by
5 posts views Thread by anonymous | last post: by
1 post views Thread by Prasad More | last post: by
7 posts views Thread by news | last post: by
8 posts views Thread by Philip Wagenaar | last post: by
2 posts views Thread by user | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.