在 C 中翻转位图

Flip Bitmap in C

有没有什么方法可以用像BitBlt或StretchBlt这样的函数来翻转位图。 我真的被 Cooridnates 弄糊涂了。 目前我已经尝试了一些变体:

BitBlt(hdc,0,bmp.bmHeight,bmp.bmWidth,0,hdc,0,0,SRCCOPY);

这些功能还能实现吗?

使用 StretchBlt。来自 manual

StretchBlt creates a mirror image of a bitmap if the signs of the nWidthSrc and nWidthDest parameters or if the nHeightSrc and nHeightDest parameters differ. If nWidthSrc and nWidthDest have different signs, the function creates a mirror image of the bitmap along the x-axis. If nHeightSrc and nHeightDest have different signs, the function creates a mirror image of the bitmap along the y-axis.

BitBlt 不允许进行翻译以外的转换。不过,StretchBlt 会这样做。只需指定一个负的目标宽度或高度(取决于您要翻转的轴),并调整相应的目标原点坐标,使其指向另一侧。例如,要水平翻转 200x100 的图像,您需要做

StretchBlt(
    dest, 
    200, 0, -200, 100,
    src,
    0, 0, 200, 100,
    SRCCOPY);