# include“l_bitmap.h”
L_LTKRN_APIL_INTL_ColorResBitmap(pBitmapSrc, pBitmapDst, uStructSize, nBitsPerPixel, uFlags, palalette, hPalette, uColors, pfnCallback, pUserData)
将位图从任何每像素位转换为任何每像素位。此函数提供了指定输出目的地和指定要使用的选项板的灵活性。
指向引用源位图句柄的指针。通过指定与目标相同的位图,可以就地转换位图。
指向指向目标位图的位图句柄的指针。以下是有效值:
价值 | 意义 |
---|---|
一样pBitmapSrc |
就地转换位图。 |
新pBITMAPHANDLE | 创建一个新的位图来包含转换后的数据。源位图保持不变。 |
零 | 依赖回调函数来指导输出。源位图保持不变。 |
用于版本控制的pBitmap所指向的结构的字节大小。使用sizeof (BITMAPHANDLE)。
每像素增加或减少位图的位数。取值范围为1、2、3、4、5、6、7、8、12、16、24、32、48、64。
处理选项。注意,调色板和抖动选项仅在结果位图需要调色板时才有用(当它是每像素8位或更少时)。您可以在适当的时候使用按位OR(|)组合值。以下是有效值:
价值 | 意义 |
---|---|
CRF_FIXEDPALETTE | [0x01]使用固定调色板 |
CRF_OPTIMIZEDPALETTE | [0x02]创建一个优化的调色板,或者如果您在pPalette 或hPalette 参数,而不是同时为调色板中的指定项提供优化的颜色。 |
CRF_NETSCAPEPALETTE | [0x40]使用Netscape Navigator和Microsoft Internet Explorer使用的固定调色板。 |
CRF_USERPALETTE | [0x10]使用palette参数中指定的调色板,不提供优化的颜色。请注意,CRF_USERHPALETTE不能Or-ed。 |
CRF_USERHPALETTE | [0x0100]使用hPalette参数中指定的调色板,不提供优化的颜色。请注意,不能使用CRF_USERPALETTE进行Or-ed。 |
CRF_IDENTITYPALETTE | [0x08]插入Windows系统面板 |
CRF_FASTMATCHPALETTE | [0x20]使用预定义的表来使用自己的调色板加速转换指L_CreateUserMatchTable. |
CRF_BYTEORDERBGR | [0x04]使用BGR颜色顺序。该标志仅在每像素为16位或更高时才有意义。 |
CRF_BYTEORDERRGB | [0x00]使用RGB颜色。该标志仅在每像素为16位或更高时才有意义。 |
CRF_BYTEORDERGRAY | (0 x80)灰度。目标位图应该是12、16或32位灰度。12、16和32位灰度图像仅支持文件和医疗成像工具包。 |
CRF_SLOWMATCH | [0x0200]与CRF_OPTIMIZEDPALETTE标志一起使用可以使用较慢但更准确的匹配过程。 |
CRF_FAVORPURECOLORS | [0x0400]在优化的调色板中给出自己的图像调色板条目中经常出现的颜色 |
CRF_NODITHERING | [0x00000000]使用最接近的颜色匹配。 |
CRF_FLOYDSTEINDITHERING | [0x00010000]使用弗洛伊德-斯坦伯格抖动 |
CRF_STUCKIDITHERING | [0x00020000]使用Stucki抖动 |
CRF_BURKESDITHERING | [0x00030000]使用Burkes抖动 |
CRF_SIERRADITHERING | [0x00040000]使用Sierra抖动 |
CRF_STEVENSONARCEDITHERING | [0x00050000]使用Stevenson Arce抖动 |
CRF_JARVISDITHERING | [0x00060000]使用Jarvis抖动 |
CRF_ORDEREDDITHERING | [0x00070000]使用有序抖动,它比其他抖动方法更快,但精度较低。 |
CRF_CLUSTEREDDITHERING | [0x00080000]使用群集抖动。 |
CRF_BYTEORDERROMM | [0x0800]使用ROMM颜色这个标志只有在每像素为24或48位时才有意义。 |
CRF_ALPHAINIT | [0x01000000]将(32或64位彩色图像)的alpha通道初始化为所有通道(8位alpha通道为0xFF, 16位alpha通道为0xFFFF)。如果没有这个标志,创建的alpha通道将初始化为0。 |
CRF_BYTEORDERRGB565 | [0x00004000] RGB 565字节顺序。 |
要使用的自定义面板。参数说明如下:
如果您想使用固定的调色板或完全优化的调色板,则在此参数中传递NULLhPalette
.方法中指定CRF_USERPALETTE,则可以提供整个面板uFlags
参数并传递调色板的地址。有关如何填充调色板的更多信息,请参阅LPRGBQUAD调色板(带有CRF_USERPALETTE).如果你想让函数用优化的颜色填充你的调色板的一部分,在uFlags参数中指定CRF_OPTIMIZEDPALETTE,并在palette中传递你的调色板的地址,在hPalette中传递NULL。有关如何填充调色板的更多信息,请参阅LPRGBQUAD调色板(带有CRF_OPTIMIZEDPALETTE).
要使用的自定义面板。参数说明如下:
如果您想使用固定的调色板或完全优化的调色板,则在此参数中传递NULLpPalette
.
如果你想提供整个调色板,在uFlags参数中指定CRF_USERHPALETTE并传递调色板的句柄。有关如何填充调色板的更多信息,请参阅LPRGBQUAD调色板(带有CRF_USERPALETTE).如果你想让这个函数用优化的颜色填充你的调色板的一部分,在uFlags参数中指定CRF_OPTIMIZEDPALETTE,并在hPalette中为调色板和你的调色板的句柄传递NULL。有关如何填充调色板的更多信息,请参阅LPRGBQUAD调色板(带有CRF_OPTIMIZEDPALETTE).
调色板中颜色的数量。传递0以获得默认值(例如256表示每像素8位)。否则,做以下其中一项:
如果您在面板或hPalette
参数,则在选项板中传递条目数(包括保留条目)。属性中指定NULLpPalette
和hPalette参数中指定CRF_OPTIMIZEDPALETTEuFlags
参数时,可以使用此参数限制函数在优化的调色板中映射的颜色数量。
用于额外处理的可选回调函数。(无论是否提供回调函数,位图都会以同样的方式修改。)
如果不提供回调函数,则该参数的值为NULL。如果提供回调函数,则使用函数指针作为此参数的值。L_ColorResBitmap在内部循环中一次处理几行。它在循环中调用这个回调函数。回调函数必须遵循中描述的函数语法COLORRESCALLBACK函数.
可用于传递回调函数所需的一个或多个附加参数的空指针。
要使用此特性,请为变量赋值或创建包含所需字段的结构。然后,在这个参数中,传递变量或结构的地址,将其强制转换为L_VOID*。回调函数在自己的pUserData形参中接收地址,可以将其转换为适当数据类型的指针以访问变量或结构。
如果不需要附加参数,则可以在此参数中传递NULL。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
此函数不支持签名数据映像。如果将签名数据图像传递给该函数,则返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED。
有关抖动的一般信息,请参阅颜色分辨率和抖动.
在指定输出目的地时,您可以就地转换位图,创建一个新的转换后的位图,或者让回调函数处理输出。
在指定选项板时,可以使用简单的选项板选项,也可以指定适合您需要的选项板。定制的调色板可以是您指定的任何大小。它可以包括特定的颜色、保留的空白项,以及该函数用优化的颜色填充的打开项。
如中所述,如果多次使用相同的定制调色板,则可以通过创建表来提高性能L_CreateUserMatchTable.
请注意:使用此函数更改24位或32位图像的颜色顺序(即RGB到BGR)在绘制或保存(到文件)时对图像没有影响。如果要更改视觉外观,可以简单地交换订单委员会成员BITMAPHANDLE.
这个函数支持从图像中剥离alpha通道。
必需的dll和库
Win32, x64, Linux。
要获得完整的示例代码,请参阅COLOR
的例子。
这个例子使用了带有回调函数的L_ColorResBitmap
在处理更改后的图像时绘制图像。参考COLORRESCALLBACK
函数查看回调函数如何绘制图像数据。
/*使用的结构为回调函数的用户数据*/
类型定义结构体tagIMAGECBPARM
{
HWND HWND;/*当前窗口*/
HDC HDC;/*设备上下文为当前窗口*/
L_INT nRow;/*第一行在输入缓冲区*/
HPALETTE hpalPaint;/*调色板手柄*/
矩形rLeadDest;/*目标矩形为绘画* /
矩形rLeadSource;/*源矩形为绘画* /
} imagecbparm, * lpimagecbparm;
/ *原型为COLORRESCALLBACK函数*/
L_INT EXT_CALLBACK ColorResCallback (pBITMAPHANDLE pBitmap,
L_UCHAR *pBuffer,
L_VOID * pColorResUserData;
L_INT ColorResBitmapExample(HWND HWND
HINSTANCE hInst, /*应用程序的当前实例,由InitInstance函数设置
*存放已加载图像的位图句柄*/,
HPALETTE hpalPaint, /*油漆面板句柄*/
矩形*rLeadDest, /*目标矩形为绘画* /
矩形*rLeadSource /*源矩形为绘画* /)
{
L_INT nRet;
IMAGECBPARM用户数据;/*使用的结构为回调函数的用户数据*/
用户数据。hpalPaint = hpalPaint;
用户数据。rLeadDest = *rLeadDest;
用户数据。rLeadSource = *rLeadSource;
UNREFERENCED_PARAMETER (hInst);
/*设置使用的用户数据为回调在L_ColorResBitmap函数*/
用户数据。hwnd = hwnd;/*当前窗口*/
用户数据。hdc = GetDC(hWnd);/*设备上下文为当前窗口*/
用户数据。nRow = 0;/*第一行在缓冲为回调函数*/
/*改变颜色分辨率为每像素4位使用优化的调色板和
使用回调函数,在处理图像时绘制图像*/
/*设置回调函数为*/ . L_ColorResBitmap函数
nRet = L_ColorResBitmap(LeadBitmap,LeadBitmap,运算符(BITMAPHANDLE) 4
CRF_FLOYDSTEINDITHERING | CRF_OPTIMIZEDPALETTE,
NULL, NULL, 0, ColorResCallback, &UserData);
如果(nRet != SUCCESS)
返回nRet;
/*避免不必要的重绘*/
ValidateRect (hWnd, rLeadDest);
返回成功;
}
帮助收藏
光栅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点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。