【问题标题】:Calling drawtobitmap() on transparent controls在透明控件上调用 drawtobitmap()
【发布时间】:2014-10-25 17:13:15
【问题描述】:

我有一个透明/不透明的表格,我希望利用它来“解释”在所述透明表格下面的程序中发生了什么。

为了评估正在发生的事情,我需要 drawtobitmap 以返回控件在屏幕上的实际外观并具有透明度,但它只是简单地捕获表单的实体版本 - 基本上是如果它没有的样子设置不透明度值。

我是否可以使用一些 OnPaint 覆盖技巧来解决这个问题,或者我是否必须将 graphics.copyfromscreen() 与相关矩形一起使用?

【问题讨论】:

  • 您可以尝试自己发送 WM_PRINT 消息 (p/invoke SendMessage()),提供引用您自己的位图的 HDC。然后,您可以将位图初始化为透明(所有像素 alpha 为 0),而不是获取任何 DrawToBitmap() 开头的内容。
  • 您要求窗口自行绘制,这样您就可以得到窗口的样子,而不是下面可见的所有其他窗口的样子。当然,您需要 CopyFromScreen() 来捕捉所有像素。

标签: c# winforms imaging


【解决方案1】:

根据 cmets 的建议,DrawToBitmap() 只会绘制窗口本身。
在这种情况下看不到透明度/不透明度。

另一方面,Graphics.CopyFromScreen() 将复制当前图形上下文中的所有像素,因此可以使透明度/不透明度可见。

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2019-10-21
    • 2011-04-16
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多