日期:2014-05-16  浏览次数:20839 次

对隐藏控件 截图
各位大侠,

我准备对一个控件显示的内容截图保存,
control.DrawToBitmap、Printwindow、BitBlt等方法都试过了,
如果控件不显示出来,截出来的就是一团黑。

请问各位有什么好的方法吗?
------解决方案--------------------
先control.CreateControl()
再control.DrawToBitmap
------解决方案--------------------
#region Interop

    [DllImport("user32.dll")]
    static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr hdc, PRF_FLAGS drawingOptions);

    const uint WM_PRINT = 0x317;

    [Flags]
    enum PRF_FLAGS : uint
    {
        CHECKVISIBLE = 0x01,
        CHILDREN = 0x02,
        CLIENT = 0x04,
        ERASEBKGND = 0x08,
        NONCLIENT = 0x10,
        OWNED = 0x20
    }

    #endregion

    public static Image CaptureImage(this Control control)
    {
        Image img = new Bitmap(control.Width, control.Height);
        using (Graphics g = Graphics.FromImage(img))
        {
            SendMessage(
               control.Handle,
               WM_PRINT,
               g.GetHdc(),
               PRF_FLAGS.CLIENT 
------解决方案--------------------
 PRF_FLAGS.NONCLIENT 
------解决方案--------------------
 PRF_FLAGS.ERASEBKGND);
        }
        return img;
    }


试试~~