还是做个笔记吧,今天要用的时候,时间太久,忘记了怎么写了,又不想翻百度/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); // 显示中心对称图像
*/