在 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);
有没有什么方法可以用像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);