# include“l_bitmap.h”
L_LTKRN_APIL_INTL_SetBitmapAlpha (pBitmap pAlpha)
替换现有alpha通道数据或在目标位图中创建新的alpha通道数据。
指向目标位图句柄,该句柄引用alpha通道数据将被更新或添加的位图。
指向源位图句柄,该句柄引用用于创建或替换alpha通道数据的位图。
| 价值 | 意义 |
|---|---|
| 成功 | 活动很成功。 |
| < 1 | 发生错误。指返回代码. |
此函数不支持签名数据映像。如果将签名数据图像传递给该函数,则返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED。
通常,alpha通道包含用于透明的掩码。这个函数,连同L_GetBitmapAlpha以及LEADTOOLS区域处理功能,让您使用alpha通道实现透明。
只有16位、32位和64位映像可以有alpha通道。如果pBitmap引用任何其他颜色分辨率的位图,此函数在替换alpha通道之前将pBitmap位图转换为32位。(如果你想要16位,你应该用L_ColorResBitmap,如有必要,在调用此函数之前。)
对于64位位图,pAlpha在替换alpha通道之前转换为16位灰度。如果pBitmap是48位的,它将被转换为64位,然后将alpha信息添加到其中。
pAlpha位图不一定是灰度的。这个函数将数据从pAlpha位图转换为必要的灰度或1位格式,因为它取代了pBitmap中的alpha通道。(pAlpha位图本身保持不变。)
必需的dll和库
Win32, x64, Linux。
此示例演示如何创建、保存和使用掩码以实现透明度。
我们假设已经创建了窗口,并设置了适合方面的大小
在pszFilename中指定的图像的比例。
L_INT SetBitmapAlphaExample(HWND HWND,L_TCHAR* szFilename){L_INT nRet;BITMAPHANDLE MainBitmap;/*主位图*/BITMAPHANDLE AlphaBitmap;/* Alpha通道位图*/RGNXFORM XFormToBitmap;/ *结构为转换显示坐标*/HDC hWindowDC;/*当前窗口的设备上下文*/矩形rClientArea;/*当前窗口的客户端区域*/矩形rRgnRect;/*定义当前区域的矩形*/hSavedPalette = NULL;/*当前系统面板的临时副本*/HPALETTE hOurPalette = NULL;/*我们将用来绘制*/的调色板/*获取当前窗口的设备上下文hWindowDC = GetDC (hWnd);/*获取当前窗口的客户端区域*/GetClientRect (hWnd, &rClientArea);/*以每像素16位的速度加载位图*/nRet = L_LoadBitmap(szFilename, &MainBitmap,运算符(bitmaphandle), 16, order_bgr, null, null);如果(nRet != SUCCESS)返回nRet;/*设置XFormToBitmap字段,假设显示矩形相同作为当前窗口的客户端区域*/XFormToBitmap。uViewPerspective = TOP_LEFT;XFormToBitmap。nXScalarNum = BITMAPWIDTH(&MainBitmap);XFormToBitmap。nXScalarDen = rClientArea.right;XFormToBitmap。nYScalarNum = BITMAPHEIGHT(&MainBitmap);XFormToBitmap。nYScalarDen = rClientArea.bottom;XFormToBitmap。nXOffset = 0;XFormToBitmap。nYOffset = 0;/*指定矩形来定义区域*/SetRect (&rRgnRect rClientArea。/ 8, rClientArea.bottom / 8,rClientArea。/ 2, rClientArea.bottom / 2);/*创建椭圆区域在AlphaBitmap */nRet = L_SetBitmapRgnEllipse(&MainBitmap, &XFormToBitmap, &rRgnRect, L_RGN_SET);如果(nRet != SUCCESS)返回nRet;/*从区域*/创建掩码位图nRet = L_CreateMaskFromBitmapRgn (&MainBitmap, &AlphaBitmap,运算符(BITMAPHANDLE));如果(nRet != SUCCESS)返回nRet;/*更新alpha通道在主位图*/nRet = L_SetBitmapAlpha(&MainBitmap, &AlphaBitmap);如果(nRet != SUCCESS)返回nRet;/*保存位图为每像素16位以保持alpha通道*/L_SaveBitmap(MAKE_IMAGE_PATH(TEXT)“Result.TIF”)), &MainBitmap, FILE_TIF, 16, 0, NULL);如果(nRet != SUCCESS)返回nRet;/*释放位图*/L_FreeBitmap (&MainBitmap);L_FreeBitmap (&AlphaBitmap);/*加载我们刚刚保存的位图,并获得它的alpha通道*/nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT(“Result.TIF”&MainBitmap)),运算符(bitmaphandle), 0, order_bgr, null, null);如果(nRet != SUCCESS)返回nRet;nRet = L_GetBitmapAlpha(&MainBitmap, &AlphaBitmap,运算符(BITMAPHANDLE));如果(nRet != SUCCESS)返回nRet;/*使用AlphaBitmap作为掩码来设置区域在主位图*/nRet = L_SetBitmapRgnFromMask (&MainBitmap, NULL, &AlphaBitmap, L_RGN_SET);如果(nRet != SUCCESS)返回nRet;/*创建用于绘制*/的调色板hOurPalette = L_CreatePaintPalette(hWindowDC, &MainBitmap);/*选择我们的调色板并保存旧的*/hSavedPalette = SelectPalette (hWindowDC, hOurPalette, FALSE);/*实现调色板*/RealizePalette (hWindowDC);/*绘制区域*/nRet = L_PaintRgnDC(hWindowDC, /*设备上下文*/&MainBitmap, /*位图句柄*/NULL, /*默认源矩形*/NULL, /*默认源剪辑区域*/&rClientArea, /*目标矩形*/NULL, /*默认目标剪切矩形*/SRCCOPY);/* ROP3代码为a普通油漆*/如果(nRet != SUCCESS)返回nRet;/*恢复旧的调色板*/SelectPalette (hWindowDC, hSavedPalette, FALSE);如果(hOurPalette)DeleteObject (hOurPalette);/*释放设备上下文*/ReleaseDC (hWnd, hWindowDC);/*释放AlphaBitmap */L_FreeBitmap (&AlphaBitmap);L_FreeBitmap (&MainBitmap);返回成功;}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。
