L_SetBitmapDataPointer

# include“l_bitmap.h”

L_LTKRN_APIL_INTL_SetBitmapDataPointer(pBitmap, pData, dwSize)

将指定位图的数据指针设置为指定的数据指针pData

参数

pBITMAPHANDLEpBitmap

指向位图句柄的指针,该句柄引用要设置数据指针的位图。

L_UCHAR* pData

用于设置指定位图数据指针的数据指针。

L_SIZE_TdwSize

由pData指向的数据缓冲区的大小。

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

此函数可用于更改创建的位图的数据指针L_CreateBitmap,或按L_AllocateBitmap,内存类型为TYPE_USER。位图的指向数据指针被设置为传入的数据指针pData

您负责管理映像数据。L_FreeBitmap将不释放pData。

当使用位图时,pData指向的内存缓冲区必须是有效的。如果释放了位图引用的内存缓冲区,则在尝试使用该位图时将遇到访问违规。

如果为pData传递NULL,则位图没有位图数据。您不应该尝试使用没有数据指针的位图。

请注意:计算单行图像数据的正确大小:

必需的dll和库

平台

Win32, x64, Linux。

另请参阅

功能

主题

例子

请注意,您需要释放分配给位图的内存
和位图数据使用如下:

L_INT SetBitmapDataPointerExample(pBITMAPHANDLE)//分配一个足够大的缓冲区,以容纳两个镜像副本L_UCHAR* pBuffer = (L_UCHAR*)GlobalAllocPtr(GMEM_MOVEABLE, pBitmap->Size * 2);L_INT我;L_INT nRet;//锁定位图L_AccessBitmap (pBitmap);//循环,并获得翻转和正常版本的图像到pBuffer(i = 0;i < pBitmap->Height;我+ +)nRet =(L_INT) L_GetBitmapRow(pBitmap,)pBuffer + i * pBitmap->BytesPerLine,pBitmap->ViewPerspective == TOP_LEFT ?pBitmap->Height - i - 1: i,pBitmap - > BytesPerLine);如果(nRet < 1)返回nRet;memcpy(pBuffer + pBitmap->Size + (pBitmap->Height - i - 1) * pBitmap->BytesPerLine,pBuffer + i * pBitmap->BytesPerLine,pBitmap - > BytesPerLine);//解锁位图L_ReleaseBitmap (pBitmap);//释放原始映像。注意,这里假设图像是24位的//简单起见,这样就不需要将调色板条目数组传递给L_CreateBitmap//对于彩色图像,你必须获取调色板条目并传递它们而不是NULLL_FreeBitmap (pBitmap);//将图像设置为翻转版本如果((nRet = L_CreateBitmap(pBitmap,运算符(BITMAPHANDLE),TYPE_USER,pBitmap->宽度,pBitmap->高度,pBitmap->BitsPerPixel,pBitmap - >订单,空,TOP_LEFT,pBuffer, pBitmap->Size)) == SUCCESS)消息框(NULL, TEXT(“图像被翻转了”),文本(""), MB_OK);//将图像设置为非翻转版本返回L_SetBitmapDataPointer(pBitmap, pBuffer + pBitmap->Size, pBitmap->Size);返回nRet;

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。