alphablend请教函数TransparentBlt的用法

alphablend  时间:2021-07-02  阅读:()

c++builder怎么使用AlphaBlend函数

1 AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图。

函数原型:AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction); 参数: hdcDest:指向目标设备环境的句柄。

nXoriginDest:指定目标矩形区域左上角的X轴坐标,按逻辑单位。

nYOriginDest:指定目标矩形区域左上角的Y轴坐标,按逻辑单位。

nWidthDest:指定目标矩形区域的宽度,按逻辑单位。

hHeghtdest:指向目标矩形区域高度的句柄,按逻辑单位。

hdcSrc:指向源设备环境的句柄。

nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。

nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。

nWidthSrc:指定源矩形区域的宽度,按逻辑单位。

nHeightSrc:指定源矩形区域的高度,按逻辑单位。

blendFunction:指定用于源位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。

源和目标混合功能当前只限为AC_SRC_OVER。

返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。

Windows NT:若想获取更多错误信息,请调用GetLastError函数。

备注:如果源矩形区域与目标矩形区域大小不一样,那么将缩放源位图与目标矩形区域匹配。

如果使用SetStretchBltMode函数,那么iStretchMode的值是BLACKONWHITE和WHITEONBLACK,在本函数中,iStretchMode的值自动转换成COLORONCOLOR。

目标坐标使用为目标设备环境当前指定的转换方式进行转换。

源坐标则使用为源设备环境指定的当前转换方式进行转换。

如果源设备环境标识为增强型图元文件设备环境,那么会出错(并且该函数返回FALSE)。

如果目标和源位图的色彩格式不同,那么AlphaBlend将源位图转换以匹配目标位图。

AlphaBlend不支持镜像。

如果源或目标区域的宽度或高度为负数,那么调用将失败。

注意添加 #pragma ment(lib,"Msimg32.lib")库 下面是一个例子: #include #pragma ment(lib,"Msimg32.lib") HINSTANCE g_hIns; HWND g_hWnd; LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow) { g_hIns=hInstance; static TCHAR szAppName[]=TEXT("HelloWin"); HWND hWnd; MSG msg; WNDCLASS wndClass; wndClass.style=CS_HREDRAW|CS_VREDRAW; wndClass.lpfnWndProc=WndProc; wndClass.cbClsExtra=0; wndClass.cbWndExtra=0; wndClass.hInstance=hInstance; wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndClass.hCursor=LoadCursor(NULL,IDC_ARROW); wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndClass.lpszMenuName=NULL; wndClass.lpszClassName=szAppName; if(!RegisterClass(&wndClass)) { MessageBox(NULL,TEXT("error"),szAppName,MB_ICONERROR|MB_OK); return 0; } hWnd=CreateWindow(szAppName,TEXT("The hello program"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL); int iReturn; //也可以放在此 ShowWindow(hWnd,iCmdShow); UpdateWindow(hWnd); while(GetMessage(&msg,hWnd,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { static HDC hdc; static HDC hBitmapDC; static HBITMAP hBitmap; static int w=50; static int h=50; static BLENDFUNCTION bf; PAINTSTRUCT ps; switch (message) { case WM_PAINT : hdc=BeginPaint(hWnd,&ps); hBitmapDC = CreateCompatibleDC(hdc); hBitmap = CreateCompatibleBitmap(hdc,w,h); SelectObject(hBitmapDC,hBitmap); SetTextColor(hBitmapDC,RGB(0,255,0)); TextOut(hBitmapDC,0,0,TEXT("asdf"),4); bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.AlphaFormat = 0; bf.SourceConstantAlpha = 50; AlphaBlend(hdc,0,0,w,h,hBitmapDC,0,0,w,h,bf); EndPaint (hWnd, &ps) ; break; case WM_DESTROY : PostQuitMessage (0) ; break ; default: return DefWindowProc (hWnd, message, wParam, lParam) ; } return 1; }

delphi编程中value值是什么意思?

value:顾名思义为"值"之意。

如Form组件属性中的,AlphaBlendvalue为窗体透明值(0~255);TransparentColorValue为窗体上预透明的颜色值。

所以,Value只是说在这个属性中需要设置一个值。

为什么alphablend 不能实现完全透明与完全不透明

win32 应用程序 GDI绘制 ------------------------- HDC hdc; HDC hBitmapDC; HBITMAP hBitmap; int width=320; int height=240; BLENDFUNCTION bf; ... case WM_PAINT : hdc=BeginPaint(hWnd,&ps); hBitmapDC = CreateCompatibleDC(hdc); hBitmap = CreateCompatibleBitmap(hdc,width,height); SelectObject(hBitmapDC,hBitmap); SetTextColor(hBitmapDC,RGB(0,255,0)); TextOut(hBitmapDC,0,0,TEXT("Test"),4); bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.AlphaFormat = 0; bf.SourceConstantAlpha = 100; AlphaBlend(hdc,0,0,width,height,hBitmapDC,0,0,width,height,bf); EndPaint (hWnd, &ps) ; break; ... 资源没释放

请教函数TransparentBlt的用法

函数功能:该函数对指定的源设备环境中的矩形区域像素的颜色数据进行位块(bit_block)转换,并将结果置于目标设备环境。

函数原型:BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent); 参数: 。

nXOriginDest:指定目标矩形左上角的X轴坐标,坐标以逻辑单位表示。

nYOriginDest:指定目标矩形左上角的Y轴坐标,坐标以逻辑单位表示。



nHeightDest:指定目标矩形的高度。



nXOriginSrc:指定源矩形(左上角)的X轴坐标,坐标以逻辑单位表示。

nYOriginsrc:指定源矩形(左上角)的Y轴坐标,坐标以逻辑单位表示。

nWidthSrc:指定源矩形的宽度。

nHeightSrc:指定源矩形的高度。

crTransparent:源位图中的RGB值当作透明颜色。

(用RGB(0,0,0)也就是黑色不行)返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。

Windows NT:若想获取更多错误信息,请调用GetLastError函数。

备注:函数TransparentBlt支持4位/像素和8位/像素格式的源位图,使用AlphaBlend可以指定带有透明度的32位/像素格式的位图。

如果源和目标矩形的大小不一致,那么将对源位图进行拉伸以与目标矩形匹配,当使用SetStretchBltMode函数时,BLACKONWHITE和WHITEONBLACK两种iStretchMode模式将被转换成TransparentBlt函数的COLORONCOLOR模式。

目标设备环境指定了用于目标坐标的变换类型,而源设备环境指定了源坐标使用的变换类型。

如果源位图或目标位图的宽度或高度是负数,那么TransparentBlt函数也不对位图进行镜像。

速查:Windows NT:5.0及以上版本;Windows:98及以上版本;Windows CE:Windows CE .NET 4.0 and later;头文件:wingdi.h:库文件:作为一个资源包含在msimg32.dll中。

小欢互联19元/月起, 即日起至10月底 美国CERA 促销活动 美国/香港八折

小欢互联成立于2019年10月,主打海外高性价比云服务器、CDN和虚拟主机服务。近期上线了自营美国CERA机房高速VPS,进行促销活动,为客户奉上美国/香港八折优惠码:Xxc1mtLB优惠码适用于美国CERA一区/二区以及香港一区/二区优惠时间:即日起至10月底优惠码可无限次使用,且续费同价!官网:https://idc.xh-ws.com购买地址:美国CERA一区:https://idc.xh-...

819云互联(800元/月),香港BGP E5 2650 16G,日本 E5 2650 16G

819云互联 在本月发布了一个购买香港,日本独立服务器的活动,相对之前的首月活动性价比更高,最多只能享受1个月的活动 续费价格恢复原价 是有些颇高 这次819云互联与机房是合作伙伴 本次拿到机房 活动7天内购买独立服务器后期的长期续费价格 加大力度 确实来说这次的就可以买年付或者更长时间了…本次是5个机房可供选择,独立服务器最低默认是50M带宽,不限制流量,。官网:https://ww...

华纳云-618大促3折起,18元/月买CN2 GIA 2M 香港云,物理机高防同享,10M带宽独享三网直连,无限流量!

官方网站:点击访问华纳云活动官网活动方案:一、香港云服务器此次推出八种配置的香港云服务器,满足不同行业不同业务规模的客户需求,同时每种配置的云服务都有不同的带宽选择,灵活性更高,可用性更强,性价比更优质。配置带宽月付6折季付5.5折半年付5折年付4.5折2年付4折3年付3折购买1H1G2M/99180324576648直达购买5M/17331556710081134直达购买2H2G2M892444...

alphablend为你推荐
row函数row函数与column函数的运用元宝网元宝网里面的一个币是真的投资赚钱吗jql建筑设计图纸上JQL 梁,是不是地下正负零基础梁?急急!inode智能客户端inode智能客户端怎么使用wifi?smartuploadSmartUpload组建实现文件上传下载,我要把文件保存到项目中的某个文件夹中,该如何实现?最好有程序参考ruby语言Ruby是 什么意思memsql易语言的msql连接怎么不成功,错哪呢?51信用卡论坛刚才发现51信用卡管家可以查个人征信了,就查了下信用卡信用记录。这是截图,大家帮我看看我的这个逾期mediasRES代表什么意思药品标准查询药品国家标准怎么查阅
出租服务器 鲁诺vps cn域名个人注册 亚洲大于500m 东莞电信局 元旦促销 国外免费全能空间 泉州移动 免费测手机号 香港亚马逊 服务器是干什么用的 下载速度测试 石家庄服务器托管 华为云建站 cdn网站加速 测速电信 登陆qq空间 深圳主机托管 ncp vi命令 更多