void putimage_white(int x, int y, IMAGE* img)
{
SetWorkingImage(img);
for (int i = 0; i < img->getwidth(); i++)
{
for (int j = 0; j < img->getheight(); j++)
{
int color = getpixel(i, j);
if (color != WHITE)
{
SetWorkingImage();
putpixel(x + i, y + j, color);
SetWorkingImage(img);
}
}
}
SetWorkingImage();
}
只是裁剪了白色
上面这个函数效率太低!
推荐用这个函数:
// Windows GDI 透明贴图函数所需 lib
#pragma comment( lib, "MSIMG32.lib")
/**
* @brief Windows GDI 函数实现透明贴图
* @param x 图像输出位置
* @param y 图像输出位置
* @param img 要输出的图像
* @param bkcolor 图像背景色,即为不输出的颜色
*/
inline void putimage_transparent(int x, int y, IMAGE img, COLORREF bkcolor)
{
TransparentBlt(GetImageHDC(GetWorkingImage()), x, y, img.getwidth(), img.getheight(), GetImageHDC(&img), 0, 0, img.getwidth(), img.getheight(), bkcolor);
}