我使用GDI来创建一些自定义的textwidget。我直接画到屏幕上,没有缓冲。
现在我想实现一些快速滚动,简单地像素化帧缓冲区的相应部分(并且只重画新的可见线条)。
例如,我注意到富文本控件是这样做的。如果我使用一些GDI绘图函数在富文本控件上直接绘制到帧缓冲区,然后滚动富文本,它也会将我的绘图与文本一起滚动。所以我假设富文本只是像素移位,它是帧缓冲区的一部分。
我也想这么做,但不知道怎么做。
有人能帮帮忙吗?(独立于编程语言)
谢谢!
发布于 2010-05-24 23:48:06
ScrollWindowEx()应用编程接口函数已针对此进行了优化。
发布于 2010-05-24 23:18:50
参见BitBlt函数:
BitBlt函数执行与指定的源设备上下文中的像素矩形相对应的颜色数据到目标设备上下文的位块传输。
文档末尾的示例:Capturing an Image
您可以使用位图来捕获图像,并且可以将捕获的图像存储在内存中,并将其显示在应用程序窗口中的不同位置。..。在某些情况下,您可能希望应用程序捕获图像并仅临时存储它们。..。要临时存储图像,应用程序必须调用CreateCompatibleDC来创建与当前window DC兼容的DC。创建兼容的DC后,通过调用CreateCompatibleBitmap函数创建具有适当尺寸的位图,然后通过调用SelectObject函数将其选择到此设备上下文中。
在创建了兼容的设备上下文并在其中选择了适当的位图之后,您可以捕获图像。BitBlt函数用于捕获图像。此函数执行位块传输,即将数据从源位图复制到目标位图。..。要重新显示图像,请再次调用BitBlt,将兼容的DC指定为源DC,将窗口DC指定为目标DC。
https://stackoverflow.com/questions/2897318
复制相似问题