图片合成问题
VC中(只要是C/C++函数都行)
请问各位 怎样将图片叠加 绘制成一张
例如在一张大图片 的特定位置上加一张小图片
使两张变一张,注意不是图片拼接,是图片在层次上的叠加合成 图片 VC 图片处理 C++
[解决办法]
BitBlt(。。。,SRCAND);
[解决办法]
通知一下 合成图片的 透明值就行了
[解决办法]
推荐使用GDI+ GDI只能处理bmp
#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;
int _tmain(int argc, _TCHAR* argv[])
{
//初始化GDI+库
GdiplusStartupInput gdiplusStartupInput;
ULONG gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
//先调GdiplusShutdown(gdiplusToken) 而后执行Graphics的析构函数会出错
{
//加载图片并绘制到内存位图, 此例把图片2绘制到图片1
Bitmap image1(L"D:\\1.jpg");
Bitmap image2(L"D:\\2.jpg");
Bitmap memoryBitmap(image1.GetWidth(), image1.GetHeight());
Graphics memoryGrap(&memoryBitmap);
memoryGrap.DrawImage(&image1, 0, 0, image1.GetWidth(), image1.GetHeight());
memoryGrap.DrawImage(&image2, 0, 0, 40, 40);
//把处理结果绘制到桌面设置环境
HDC hdc = ::GetDC(NULL);
Graphics deskGrap(hdc);
deskGrap.DrawImage(&memoryBitmap, 0, 0, memoryBitmap.GetWidth(), memoryBitmap.GetHeight());
::ReleaseDC(NULL, hdc);
//如果使用HDC用bitblt函数,则需要重新选入内存图片
// HDC hdcMem = memoryGrap.GetHDC();
// HBITMAP hMembitmap = NULL;
// memoryBitmap.GetHBITMAP(Color::Black, &hMembitmap);
// ::SelectObject(hdcMem, hMembitmap);
//BitBlt(hdc, 0, 0, memoryBitmap.GetWidth(), memoryBitmap.GetHeight(), hdcMem, 0, 0, SRCCOPY);
}
//释放GDI+库
GdiplusShutdown(gdiplusToken);
return 0;
}
[解决办法]
试试 加运算 或者或运算 网上有现成的类,直接调用函数就行