首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

图片合成有关问题

2013-06-19 
图片合成问题VC中(只要是C/C++函数都行)请问各位 怎样将图片叠加 绘制成一张例如在一张大图片 的特定位置

图片合成问题
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;
}


[解决办法]
试试 加运算 或者或运算 网上有现成的类,直接调用函数就行

热点排行