【问题标题】:Get Bitmap/DC of a tabbed MDI forms获取选项卡式 MDI 表单的位图/DC
【发布时间】:2011-12-28 11:20:11
【问题描述】:

我有一组表单,它们被可视化为主表单的 MDI 选项卡子项(通过 Infragistics UltraTabbedMDIManager,但这个 API 并不那么重要)

我使用 GetDC()、CreateCompatibleDC()、CreateCompatibleBitmap()、SelectObject()、BitBlt().. 将这些表单的设备上下文的位图 blit 到一些内存中。 这有效,但仅适用于活动的 MDI 子窗体,即用户可见的窗体。 如果我为未激活的表单(当前未显示的任何选项卡)执行此操作,我会在内存区域中看到黑屏,或者我什至会在其上方获得屏幕的“副本”。 如果我对不再可见的表单执行此操作,也会出现黑屏。

我应该怎么做才能获得这些隐藏表单的位图?我必须求助于缓存还是我可以使用其他一些技巧? 我不能使用 Winforms DrawToBitmap() 函数,因为表单包含一些无法用它检索的低级图形内容。 如何使用 winapi 检索这些“隐藏”表单 DC 的位图?

【问题讨论】:

  • 您的确切问题没有简单的答案。你到底需要画什么?内容,完整形式,...
  • 在下面查看我自己的答案。顺便说一句,我不同意所显示内容的性质有任何相关性。

标签: winforms winapi gdi


【解决方案1】:

我设法使用 user32.dll 中的 PrintWindow API 做到了。 它解决了 MDI 选项卡问题,但是它没有解决隐藏表单的问题。 我通过在屏幕外的某个位置简要显示表单来解决这个问题。 似乎“最终”的方法是使用(未记录的)dwm.dll,但这并不可取,因为不同版本的 Windows 之间的接口不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多