用Bitmap创建GDI模式刷,然后用该刷子填充rect与直接从设备独立位图中闪动之间有功能上的区别吗?
为了澄清我所说的第一个场景是使用位图创建模式刷,然后使用PATCOPY将整个屏幕填充为patblt。我的意思是,使用bitblit从源位图中直接闪动看起来要有效得多,但我不确定它们在功能上是否相同(对于Windows来说是非常新的,如果这有点模糊或难以理解)
发布于 2018-06-14 18:47:23
方法1:创建一个模式刷,将其选中到DC中,并将PatBlt与PATCOPY结合使用
方法2:在内存DC中选择一个DIB部分并使用BitBlt。
这些方法的主要区别是:
就性能而言,在Windows的现代版本中,它们可能大致相同。DIB颜色到目标颜色格式的映射在DC中被选中时只发生一次。如果在卡上有足够的内存,图像就应该在图形总线上传输一次。这两种方法可能都有针对特殊情况的优化路径。
使用PatBlt,您可以重新使用单色图案刷并设置不同的颜色,只需更改DC中的文本和背景色即可。使用BitBlt,您必须首先更新内存DC中的位图。
如果我没记错的话,在过去的日子里,图案刷的大小被限制在非常小的东西上(比如孵化刷)。图案刷通常是单色的(每像素1位),通过设置文本和背景色并快速地用PatBlt贴图来填充背景。
https://stackoverflow.com/questions/50862516
复制相似问题