Ok make a new windows Form, then add a RichTextBox to it. Then render
your RTF on the richtextbox and screen dump the Form (you never have to
show it)
Here is the code to dump a Form:
public static void CaptureScreen(Form form, string saveLocation)
{
Graphics g1 = form.CreateGraphics();
Image image = new Bitmap(form.ClientRectangle.Width,
form.ClientRectangle.Height, g1);
Graphics g2 = Graphics.FromImage(image);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, form.ClientRectangle.Width,
form.ClientRectangle.Height, dc1, 0, 0, 13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
image.Save(saveLocation, System.Drawing.Imaging.ImageFormat.Jpeg);
image.Dispose();
}
[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
);
--
Wal
http://www.vooose.com
Tom Sweet - 02 Mar 2006 15:29 GMT
Thank you Vooose
> Ok make a new windows Form, then add a RichTextBox to it. Then render
> your RTF on the richtextbox and screen dump the Form (you never have to
[quoted text clipped - 36 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***
electrobrainleonard - 29 Sep 2007 21:17 GMT
Yes, I know, I'm more than a year late on seeing this. I've been looking for
something like this for a while.
Unfortunately, vooose, this only works if the RichTextBox control is visible
and on top of all other controls/windows (topmost). It's the programmatic
equivalent of hitting Alt+PrntScrn. The part where you say "you never have
to show it" isn't correct.
I'm looking for a way to quickly convert an RTF file into a PNG file (or
bitmap or whatever). I was hoping this would help, but it's not adequate.
Is there some other way to redirect or copy a RichTextBox's rendering
(regardless of the Height) to a Bitmap object, without the RichTextBox being
visible? I was hoping to make a small and fast console app that I can add to
an RTF file's open-with menu.
> Ok make a new windows Form, then add a RichTextBox to it. Then render
> your RTF on the richtextbox and screen dump the Form (you never have to
[quoted text clipped - 36 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***