現在、WM_PRINT 呼び出しを使用して、コントロールをグラフィック オブジェクトにレンダリングしています。
GraphicsState backup = graphics.Save();
graphics.TranslateTransform(50, 50);
IntPtr destHdc = graphics.GetHdc();
const int flags = (int)(DrawingOptions.PRF_CHILDREN | DrawingOptions.PRF_CLIENT | DrawingOptions.PRF_NONCLIENT);
NativeMethods.SendMessage(srcControl.Handle, (Int32)WM.WM_PRINT, (IntPtr)destHdc, (IntPtr)flags);
graphics.ReleaseHdc(destHdc);
graphics.DrawLine(Pens.Blue, new Point(), new Point(srcControl.Width, srcControl.Height));
graphics.Restore(backup);
DrawToBitmap メソッドは画面外にあるコントロールを処理しないため、control.DrawToBitmap() ではなく WM_PRINT コマンドを使用する必要があります。
このコードは、青い線の描画を 50,50 で正しく変換しますが、コントロールは左上隅 (0,0) にレンダリングされます。WM_PRINT コマンドを使用して特定の場所 (50,50) に印刷する方法はありますか?
ありがとう