L_SetOverlayBitmap

# include“l_bitmap.h”

L_LTKRN_APIL_INTnIndex L_SetOverlayBitmap (pBitmap, pOverlayBitmap uFlags)

设置某个指数的覆盖图。

参数

pBITMAPHANDLEpBitmap

位图句柄指针引用主位图。

L_INTnIndex

的索引设置位图的覆盖这个索引是从零开始的。

pBITMAPHANDLEpOverlayBitmap

覆盖位图句柄指针包含新的覆盖图。这可以为空,在这种情况下,相应的覆盖图将被释放。

L_UINTuFlags

国旗决定如何设置位图的叠加。你不能把这些旗帜。可能的值是:

价值 意义
OVERLAY_COPY [0 x0000]覆盖插入位图的副本在覆盖列表中。pOverlayBitmap不会受到影响。
OVERLAY_NOCOPY [0 x0001] pOverlayBitmap设置为覆盖列表没有复制。你应该修改覆盖图的时候要小心,因为您可以修改/覆盖图列表中的条目失效。
OVERLAY_MOVE [0 x0003] pOverlayBitmap搬进覆盖列表。它还将被重置,所以你不能对其进行更改。这是在OVERLAY_NOCOPY推荐。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

调用这个函数与一个有效的位图处理pOverlayBitmap释放旧的覆盖在指定位图索引和设置覆盖位图索引新的pOverlayBitmap引用的位图。如果pOverlayBitmap是NULL,旧的覆盖图被释放和大小重置为:

OverlayWidth = BITMAPWIDTH (pBitmap) - pOverlayBitmap.ptOrigin.x

OverlayHeight = BITMAPHEIGHT (pBitmap) - pOverlayBitmap.ptOrigin.y

地点:

如果uFlags OVERLAY_NOCOPY分配覆盖图,所有成员从pOverlayBitmap结构复制到覆盖数组。这意味着当你从pOverlayBitmap更新数据,覆盖位图也改变了。应格外注意当使用这个标志,因为你可以覆盖位图句柄无效存储在数组中。举个例子,如果你免费覆盖图,指向的数据覆盖图从内部数组也释放了,但是数组不知道这发生了,认为数据指针仍然有效。如果以某种方式访问叠加图,就会发生崩溃。一个更安全的方式快速设置数据是使用OVERLAY_MOVE。

如果uFlagsOVERLAY_MOVE, pOverlayBitmap的数据复制到覆盖数组然后pOverlayBitmap结构抹去。这意味着你可以做任何事pOverlayBitmap结构和覆盖位图存储在数组将不受影响。这是最有效的方式设置叠加图,将因为没有副本。

你可以改变通过调用L_SetOverlayBitmap覆盖位图的大小。请注意,您可以调用L_SetOverlayBitmap未分配的位图。在这种情况下,只使用宽度和高度的覆盖图。如果一个覆盖图已经存在,它将被释放,新宽度/高度将集。这样做之后,你必须打电话L_SetOverlayAttributes分配的覆盖图和图像数据从主位图填充它。

如果pOverlayBitmap引用一个位图不出,这个函数会返回一个错误显示位图有错误比特每像素。

必需的dll和库

平台

Win32 x64, Linux。

另请参阅

功能

主题

例子

这个例子将加载位图的叠加,并设置它的颜色和一些属性。

L_INT SetOverlayBitmapExample (pBITMAPHANDLE pBitmap,LPTSTR pszName,L_INT nIndex,也就是说crColor){L_INT nRet;BITMAPHANDLE OverlayBitmap;OVERLAYATTRIBUTES OVERLAYATTRIBUTES;/ /加载,然后设置覆盖图nRet = L_LoadBitmap (pszName &OverlayBitmap,运算符(BITMAPHANDLE), 1 ORDER_RGB空,空);如果(nRet = =成功)nRet = L_SetOverlayBitmap (pBitmap nIndex、&OverlayBitmap OVERLAY_MOVE);如果(nRet = =成功){OverlayAttributes。uStructSize =运算符(OVERLAYATTRIBUTES);OverlayAttributes。crColor = crColor;OverlayAttributes。uFlags= OVERLAY_AUTOPAINT;如果(nIndex ! = 3)/ / auto-process覆盖除了指数3OverlayAttributes。uFlags|= OVERLAY_AUTOPROCESS;OverlayAttributes.ptOrigin.x = nIndex * 30;OverlayAttributes.ptOrigin.y = nIndex * 10;OverlayAttributes。uBitPosition = (L_UINT16) (pBitmap - > BitsPerPixel - nIndex - 1);nRet = L_SetOverlayAttributes (pBitmap,nIndex,&OverlayAttributes,OVERLAYATTRIBUTES_COLOR |OVERLAYATTRIBUTES_FLAGS |OVERLAYATTRIBUTES_ORIGIN |OVERLAYATTRIBUTES_BITINDEX);}L_FreeBitmap (&OverlayBitmap);返回nRet;}

LEADTOOLS光栅成像C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。