如何将 BMP 的一部分复制到 canvas?

How to copy part of a BMP to a canvas?

我有一个大位图 (pf24bit)。我只想将该图像的一部分(小矩形)复制到 canvas。 canvas 是双缓冲的。

frmTester.Canvas.CopyRect() 可以解决问题,但它有两个问题:

  1. 复制的图像有点损坏
  2. 太慢了。

BitBlt 非常快,但它会复制整个位图。

BitBlt is super fast, but it will copy the entire bitmap.

实际上,不:BitBlt 允许您仅复制源的矩形部分,使用 x1y1cxcy参数。

但是,源矩形和目标矩形使用相同的宽度和高度,因此 BitBlt 不能用于拉伸(或缩放)您复制的部分。

不过,

StretchBlt 允许您这样做。