StretchBlt()与AlphaBlend()函数 - ezhong

ezhong 2021-08-29 原文


StretchBlt()与AlphaBlend()函数


还是做个笔记吧,今天要用的时候,时间太久,忘记了怎么写了,又不想翻百度/Google,最后就在硬盘里翻了好一会。

 

英文啊,英文, 啥时候能看英文比中文还顺畅。

 

 

 

 

 

	BLENDFUNCTION blend;
	blend.AlphaFormat=0;			//字段AlphaFormat有两个选择:0表示源位图中的所有像素使用同样的常量alpha值,
									//即SourceConstantAlpha字段中的值,AC_SRC_ALPHA表示每个像素有各自的alpha通道。
	blend.BlendFlags=0;				//BlendFalgs保留字段,必须是0
	blend.BlendOp=AC_SRC_OVER;		//BlendOp字段指明了源混合操作,但只支持AC_SRC_OVER,即根据源alpha值把源图像叠加到目标图像上
	blend.SourceConstantAlpha=50;	//0到255,0表示完全透明,255表示完全不透明
	if(!AlphaBlend(hm_DC0,100,100,200,bitmap.bmHeight,DirectDC,0,0,bitmap.bmWidth,bitmap.bmHeight,blend))
	{
		MessageBox(L"Faild",L"AlphaBlend",MB_OK);
	}
	CString str	=L"//USER//bitblt//book.bmp/0";
	CDC  dcMem2;
	CBitmap bmp2;
	dcMem2.CreateCompatibleDC(&dc);
	bmp2.m_hObject=SHLoadDIBitmap(str);
	dcMem2.SelectObject(&bmp2);		
	//dc.BitBlt(100,100,121,129,&dcMem2,0,0,SRCCOPY);
	dc.StretchBlt(200,200, 121,-129,&dcMem2,0,0,121,129,SRCCOPY);
	dc.StretchBlt(200,200,-121,  30,&dcMem2,0,0,121,129,SRCCOPY);
	dc.StretchBlt(200,200,-121,-129,&dcMem2,0,0,121,129,SRCCOPY);
	dc.StretchBlt(200,200, 121,  30,&dcMem2,0,0,121,129,SRCCOPY);
	dcMem2.DeleteDC();
	bmp2.DeleteObject();
/*
	StretchBlt()函数支持图像的镜像显示,如果将目标区域的高度或宽度取为负值,就可以实现图像的镜像显示。
	pDC->StretchBlt(100, 100,  48,  48, &BackDC, 0, 0, 48, 48, SRCCOPY);	// 显示正常图像
	pDC->StretchBlt(100, 100, -48,  48, &BackDC, 0, 0, 48, 48, SRCCOPY);	// 显示水平对称图像
	pDC->StretchBlt(100, 100,  48, -48, &BackDC, 0, 0, 48, 48, SRCCOPY);	// 显示垂直对称图像
	pDC->StretchBlt(100, 100, -48, -48, &BackDC, 0, 0, 48, 48, SRCCOPY);	// 显示中心对称图像
	*/

  


 

发表于
2011-06-24 10:49 
ezhong 
阅读(1931
评论(0
编辑 
收藏 
举报

 

版权声明:本文为ezhong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ezhong/archive/2011/06/24/2171458.html

StretchBlt()与AlphaBlend()函数 - ezhong的更多相关文章

  1. AlphaBlend StretchBlt BitBlt

    http://www.cnblogs.com/lisen/archive/2010/01/13/1646517 […]...

  2. Delphi 7中对StretchBlt, StretchDIBits, DrawDibDraw, BitBlt 的性能测试 – 原创

    我的天哪,上一篇博文是2年前的事情了。看来又虚度了2年光阴,继续学习。。。 本文算是副产品,正品是利用FFmp […]...

随机推荐

  1. 前端读者 | Web App开发入门

    本文来自互联网 自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名 […]...

  2. Matlab – Matlab中存储及读取数据(转)

    「储存」和「读取」的指令分别是save及load,而save的数据型态又分为:(1)双位元格式 (binary […]...

  3. Spring源码阅读笔记06:bean加载之如何获取单例

    本文在浏览了完整的bean获取流程的基础上,着重分析了从缓存中获取bean,这只是整个bean获取流程中的第一 […]...

  4. Photoshop中裁切圆形图片 – 追梦人2017

          1、建立一个透明画布。 2、打开要处理的图片并拖入画布中。 3、用圆形工具勾勒轮廓。 4、右键轮廓 […]...

  5. Java反射(3)调用方法

    目录: 1.访问方法(Method)对象的方法汇总 2.获取方法(Method)对象中的值 3.设置方法(Me […]...

  6. 数学建模论文观后感—-2010年上海世博会影响力的定量评估

    2010年上海世博会影响力的定量评估 题目:感兴趣的某个侧面,定量评估2010年上海世博会的影响力 【对比 新 […]...

  7. 常见的浏览器及其内核(一)

           市场上浏览器种类众多,其内核也就是渲染引擎也各不相同,所以我们在前端开发中就要注意到兼容性,使我 […]...

  8. BZOJ1835,LG2605 [ZJOI2010]基站选址

    题意 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为\(D_i\) 需要在这些村 […]...

展开目录

目录导航