А чем это отличается от того что я писал? Функционал вынесен в отдельную функцию, круто, а суть-то та самая. И получаю тот самый пустой файл. Пустой это не значит 0 байт, линейные размеры его те-же что и у браузера и весит около 6 килобайт. Изображения нет, вот проблема. Вот как это сейчас у меня выглядит:
| Код | [Flags] private enum DrawingOptions { PRF_CHECKVISIBLE = 0x00000001, PRF_NONCLIENT = 0x00000002, PRF_CLIENT = 0x00000004, PRF_ERASEBKGND = 0x00000008, PRF_CHILDREN = 0x00000010, PRF_OWNED = 0x00000020 }
private const int WM_PAINT = 0xF;
[DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SendMessage(IntPtr hWnd, int msg, IntPtr dc, DrawingOptions opts);
public static Bitmap GetImageControl(Control control) { try { Bitmap bm = new Bitmap((int)control.Width + 1, (int)control.Height + 1); using (Graphics g = Graphics.FromImage(bm)) { IntPtr dc = g.GetHdc(); try { SendMessage(control.Handle, WM_PAINT, dc, DrawingOptions.PRF_CHILDREN | DrawingOptions.PRF_CLIENT | DrawingOptions.PRF_NONCLIENT); } finally { g.ReleaseHdc(dc); } } return bm; } catch (Exception e) { String msg = e.Message; return null; } }
private void button2_Click(object sender, EventArgs e) { Bitmap bm = GetImageControl(browser); if (bm != null) { bm.Save(@"C:\1.bmp"); MessageBox.Show("Done"); } }
|
|