【问题标题】:Windows GDI: Difference Between a Pattern Brush & BitBlt of a BitmapWindows GDI:位图的图案画笔和 BitBlt 之间的区别
【发布时间】:2018-11-24 12:40:39
【问题描述】:

使用位图创建 GDI 图案画笔然后用该画笔填充矩形与直接从设备无关位图进行 Blitting 之间有什么功能区别吗?

为了澄清,我所说的第一个场景是使用位图创建图案画笔,然后使用 PATCOPY 用 patblt 填充整个屏幕。我的意思是,使用 bitblit 从源位图直接进行 Blitting 似乎效率更高,但我不确定它们在功能上是否相同(对于 Windows 来说非常新,如果这有点模糊或难以理解,请见谅)

【问题讨论】:

    标签: c windows graphics gdi


    【解决方案1】:

    方法一:创建图案画笔,选择到DC中,使用PatBlt和PATCOPY

    方法二:在内存DC中选择一个DIB段,使用BitBlt。

    这些方法的主要区别是:

    • 如果目标矩形大于源矩形,方法 1 将为您平铺图像。使用方法 2,您必须重复调用 BitBlt。

    • 使用方法 2,您必须创建和管理内存 DC。

    在性能方面,它们在现代版本的 Windows 中可能大致相同。 DIB 颜色到目标颜色格式的映射仅在选择到 DC 时发生一次。如果卡上有足够的内存,图像应该只通过图形总线传输一次。这两种方法可能都有针对特殊情况的优化路径。

    使用 PatBlt,您可以重复使用单色图案画笔并设置不同的颜色,只需更改 DC 中的文本和背景颜色即可。使用 BitBlt,您必须先更新内存 DC 中的位图。

    如果我没记错的话,在过去,图案画笔的大小仅限于非常小的东西(如影线画笔)。图案画笔通常是单色的(每像素 1 位),用于通过设置文本和背景颜色并使用 PatBlt 快速平铺来填充背景。

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 2016-08-10
      • 2011-06-03
      • 2010-11-04
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2018-12-28
      • 2023-03-05
      相关资源
      最近更新 更多