gpt4 book ai didi

c - Windows GDI : Difference Between a Pattern Brush & BitBlt of a Bitmap

转载 作者:行者123 更新时间:2023-11-30 14:47:57 24 4
gpt4 key购买 nike

使用位图创建 GDI 图案画笔然后使用该画笔填充矩形与直接从设备独立位图进行位图传输之间有功能区别吗?

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

最佳答案

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

方法2:选择一个DIB段到内存DC中并使用BitBlt。

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

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

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

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

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

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

关于c - Windows GDI : Difference Between a Pattern Brush & BitBlt of a Bitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50862516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com