仅在C#中打印活动窗口

简·马特森

我只想从C#应用程序中打印活动窗口。使用CopyFromScreen()无效,因为它需要屏幕截图,并且出现的其他瞬态窗口可能会部分隐藏该窗口。所以我尝试了PrintWindow():

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    e.Graphics.PageScale = 10.0f;
    Graphics g = e.Graphics;
    PrintWindow(this.Handle, g.GetHdc(), 0);
}

无论我使用哪种PageScale,这都会在窗口上产生很小的邮票大小的打印输出。有任何想法吗?

编辑这可以达到目的:

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    Graphics myGraphics = CreateGraphics();
    var bitmap = new Bitmap(Width, Height, myGraphics);
    DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
    e.Graphics.DrawImage(bitmap, 0, 0);
}
彼得21

进行一些谷歌搜索,我发现:从XP中的隐藏或剪切窗口复制内容?

似乎您需要准备一个位图来存储页面:

// Takes a snapshot of the window hwnd, stored in the memory device context hdcMem
HDC hdc = GetWindowDC(hwnd);
if (hdc)
{
    HDC hdcMem = CreateCompatibleDC(hdc);
    if (hdcMem)
    {
        RECT rc;
        GetWindowRect(hwnd, &rc);

        HBITMAP hbitmap = CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
        if (hbitmap)
        {
            SelectObject(hdcMem, hbitmap);

            PrintWindow(hwnd, hdcMem, 0);

            DeleteObject(hbitmap);
        }
        DeleteObject(hdcMem);
    }
    ReleaseDC(hwnd, hdc);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅在活动窗口上打印屏幕?

来自分类Dev

如何在 C - WinAPI 中打印活动窗口的标题

来自分类Dev

C#员工活动计划获取活动已打印

来自分类Dev

宏仅在相对于引用工作表的活动工作表中打印

来自分类Dev

Vala 打印输出仅在窗口关闭后在终端中可见

来自分类Dev

告诉窗口从C#中的线程关闭

来自分类Dev

无法在WPF C#中关闭窗口

来自分类Dev

在C#中更改所选窗口的标题

来自分类Dev

仅在numpy中打印实根

来自分类Dev

使用C#处理Selenium中的窗口弹出窗口

来自分类Dev

在Linux中隐藏活动窗口

来自分类Dev

设置活动的Chrome窗口(C ++)

来自分类Dev

在C#中显示打印预览

来自分类Dev

在C#中捕获python打印语句

来自分类Dev

在C#中打印多页

来自分类Dev

在C#中打印list的值

来自分类Dev

在C#中捕获python打印语句

来自分类Dev

在C#中打印多页

来自分类Dev

在C#中打印字典键值对

来自分类Dev

在 C# 中在图像上打印文本

来自分类Dev

打印保存在 C# 中的文件

来自分类Dev

C#中的打印模式

来自分类Dev

pygame仅在鼠标在游戏窗口上活动时更新吗?

来自分类Dev

如何在C#打印中设置打印点

来自分类Dev

C#我可以对活动窗口下的所有内容进行截图吗?

来自分类Dev

WPF-组合框C#选择未显示在活动窗口中

来自分类Dev

代表与活动:C#

来自分类Dev

仅在XML中替换属性内的双引号:C#

来自分类Dev

外部C / C ++库无法在C#中打印