使用CDC进行颜色/图片合成(透明处理)
2018-03-08 21:53
274 查看
//注:原文章出处忘了,只记得根据当时的方法做的两个颜色/图片合成的函数/************************************************************************//* 颜色和颜色进行合成/************************************************************************/void DrawAlphaRect(CDC* pDC, CRect& rect, COLORREF clr, unsigned char cAlpha){CDC memDC;CBitmap bmp, *pOldBmp = NULL;memDC.CreateCompatibleDC(pDC);bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());pOldBmp = memDC.SelectObject(&bmp);memDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), clr);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0; //..pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, rect.Width(), rect.Height(), bf);memDC.SelectObject(pOldBmp);}/************************************************************************//* 图片和颜色进行合成/************************************************************************/void DrawAlphaBitmap(CDC* pDC, CRect& rect, CBitmap& bmp, unsigned char cAlpha){CDC memDC;memDC.CreateCompatibleDC(pDC);CSize sz = bmp.GetBitmapDimension();BITMAP bm;bmp.GetBitmap(&bm);sz.SetSize(bm.bmWidth, bm.bmHeight);CBitmap* pOldBmp = memDC.SelectObject(&bmp);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0;pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, sz.cx, sz.cy, bf);memDC.SelectObject(pOldBmp);}//两个调用处理void Test1(){COLORREF clr = RGB(141, 173, 223);CDC* pDC = GetDC();DrawAlphaRect(pDC, CRect(10, 10, 500, 200), clr, 194);ReleaseDC(pDC);}void Test2(){CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP_WS);CDC* pDC = GetDC();DrawAlphaBitmap(pDC, CRect(10, 210, 500, 500), bmp, 194);ReleaseDC(pDC);}//注:原文章出处忘了,只记得根据当时的方法做的两个颜色/图片合成的函数/************************************************************************//* 颜色和颜色进行合成/************************************************************************/void DrawAlphaRect(CDC* pDC, CRect& rect, COLORREF clr, unsigned char cAlpha){CDC memDC;CBitmap bmp, *pOldBmp = NULL;memDC.CreateCompatibleDC(pDC);bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());pOldBmp = memDC.SelectObject(&bmp);memDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), clr);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0; //..pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, rect.Width(), rect.Height(), bf);memDC.SelectObject(pOldBmp);}/************************************************************************//* 图片和颜色进行合成/************************************************************************/void DrawAlphaBitmap(CDC* pDC, CRect& rect, CBitmap& bmp, unsigned char cAlpha){CDC memDC;memDC.CreateCompatibleDC(pDC);CSize sz = bmp.GetBitmapDimension();BITMAP bm;bmp.GetBitmap(&bm);sz.SetSize(bm.bmWidth, bm.bmHeight);CBitmap* pOldBmp = memDC.SelectObject(&bmp);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0;pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, sz.cx, sz.cy, bf);memDC.SelectObject(pOldBmp);}//两个调用处理void Test1(){COLORREF clr = RGB(141, 173, 223);CDC* pDC = GetDC();DrawAlphaRect(pDC, CRect(10, 10, 500, 200), clr, 194);ReleaseDC(pDC);}void Test2(){CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP_WS);CDC* pDC = GetDC();DrawAlphaBitmap(pDC, CRect(10, 210, 500, 500), bmp, 194);ReleaseDC(pDC);}
//注:原文章出处忘了,只记得根据当时的方法做的两个颜色/图片合成的函数
/************************************************************************//* 颜色和颜色进行合成/************************************************************************/void DrawAlphaRect(CDC* pDC, CRect& rect, COLORREF clr, unsigned char cAlpha){CDC memDC;CBitmap bmp, *pOldBmp = NULL;memDC.CreateCompatibleDC(pDC);bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());pOldBmp = memDC.SelectObject(&bmp);memDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), clr);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0; //..pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, rect.Width(), rect.Height(), bf);memDC.SelectObject(pOldBmp);}/************************************************************************//* 图片和颜色进行合成/************************************************************************/void DrawAlphaBitmap(CDC* pDC, CRect& rect, CBitmap& bmp, unsigned char cAlpha){CDC memDC;memDC.CreateCompatibleDC(pDC);CSize sz = bmp.GetBitmapDimension();BITMAP bm;bmp.GetBitmap(&bm);sz.SetSize(bm.bmWidth, bm.bmHeight);CBitmap* pOldBmp = memDC.SelectObject(&bmp);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0;pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, sz.cx, sz.cy, bf);memDC.SelectObject(pOldBmp);}//两个调用处理void Test1(){COLORREF clr = RGB(141, 173, 223);CDC* pDC = GetDC();DrawAlphaRect(pDC, CRect(10, 10, 500, 200), clr, 194);ReleaseDC(pDC);}void Test2(){CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP_WS);CDC* pDC = GetDC();DrawAlphaBitmap(pDC, CRect(10, 210, 500, 500), bmp, 194);ReleaseDC(pDC);}
转自:http://blog.csdn.net/gxj1680/article/details/6333997
//注:原文章出处忘了,只记得根据当时的方法做的两个颜色/图片合成的函数
/************************************************************************//* 颜色和颜色进行合成/************************************************************************/void DrawAlphaRect(CDC* pDC, CRect& rect, COLORREF clr, unsigned char cAlpha){CDC memDC;CBitmap bmp, *pOldBmp = NULL;memDC.CreateCompatibleDC(pDC);bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());pOldBmp = memDC.SelectObject(&bmp);memDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), clr);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0; //..pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, rect.Width(), rect.Height(), bf);memDC.SelectObject(pOldBmp);}/************************************************************************//* 图片和颜色进行合成/************************************************************************/void DrawAlphaBitmap(CDC* pDC, CRect& rect, CBitmap& bmp, unsigned char cAlpha){CDC memDC;memDC.CreateCompatibleDC(pDC);CSize sz = bmp.GetBitmapDimension();BITMAP bm;bmp.GetBitmap(&bm);sz.SetSize(bm.bmWidth, bm.bmHeight);CBitmap* pOldBmp = memDC.SelectObject(&bmp);BLENDFUNCTION bf;bf.BlendOp = AC_SRC_OVER;bf.BlendFlags = 0;bf.SourceConstantAlpha = cAlpha;bf.AlphaFormat = 0;pDC->AlphaBlend(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, sz.cx, sz.cy, bf);memDC.SelectObject(pOldBmp);}//两个调用处理void Test1(){COLORREF clr = RGB(141, 173, 223);CDC* pDC = GetDC();DrawAlphaRect(pDC, CRect(10, 10, 500, 200), clr, 194);ReleaseDC(pDC);}void Test2(){CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP_WS);CDC* pDC = GetDC();DrawAlphaBitmap(pDC, CRect(10, 210, 500, 500), bmp, 194);ReleaseDC(pDC);}
转自:http://blog.csdn.net/gxj1680/article/details/6333997
相关文章推荐
- 使用CDC进行颜色/图片合成(透明处理)
- 使用python处理RGBA格式的透明图片的粘贴
- 使用ImageMagick进行图片缩放、合成与裁剪(js+python)
- 使用 PHP 、 GD 、ImageMagic 、JS 等对图片进行滤镜处理资料收集
- 使用GirdView异步加载图片,并对图片进行颜色矩阵变化
- D3D 中LPD3DXSPRITE(点精灵)对图片进行缩放旋转透明处理
- VC++使用CImage PNG转BMP图片透明背景处理
- 【数字图像处理】使用kmeans算法对TrueColor图片进行优化
- 使用opencv创建一张纯黑色的图片与其他图片进行合成
- 使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量
- Android中使用Bitmap对图片进行特效处理
- Android -- 图片处理, 画画板,缩放,旋转,平移,镜面,倒影,图片合成,颜色处理
- 使用JAVA如何对图片进行格式检查以及安全检查处理
- Java 图片处理 给原有图片填充颜色满足需求大小 背景透明
- PB中对treeview所加载图片进行透明处理
- Android -- 图片处理, 画画板,缩放,旋转,平移,镜面,倒影,图片合成,颜色处理
- 使用ImageMagick进行图片缩放、合成与裁剪(js+python)