Windows GDI:模式画笔之间的区别& Bitmap的BitBlt

时间:2018-06-14 16:57:22

标签: c windows graphics gdi

使用BitMap创建GDI Pattern Brush,然后使用该画笔填充rect,以及直接从设备独立位图进行Blitting,是否有任何功能差异?

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

1 个答案:

答案 0 :(得分:1)

方法1:创建图案画笔,将其选入DC,并使用PatBlt和PATCOPY

方法2:在存储器DC中选择DIB部分并使用BitBlt。

这些方法之间的主要区别是:

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

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

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

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

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