L_EfxEffectBlt

# include“l_bitmap.h”

L_LTEFX_APIL_INTL_EfxEffectBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hd证监会,nXSrc, nYSrc, uEffect, uGrain, uDelay, nSpeed, nCycles, uPass, uMaxPass, fTransparency, crTransparency, uWandWidth, crWand, uROP)

在应用特殊效果的同时,将与矩形像素对应的颜色数据从指定源设备上下文中传输到目标设备上下文中。

参数

HDC

目标设备上下文的句柄。

L_INTnxd

目标矩形原点的X坐标。

L_INTnYDest

目标矩形原点的Y坐标。

L_INTnWidth

目标矩形的宽度。

L_INTnHeight

目标矩形的高度。

HDChdcSrc

源设备上下文的句柄。

L_INTnXSrc

源矩形原点的X坐标。

L_INTnYSrc

源矩形原点的Y坐标。

L_UINTuEffect

涂漆时的效果。有效值请参见影响类型

L_UINTuGrain

粒化的大小。这是绘制效果时要更新的最小尺寸(像素宽度或高度)。使用小颗粒使绘画更流畅,但需要更长的时间作画。使用大的颗粒会使画更粗糙,但画得更快。如果uEffect参数来自Wave类,它表示波的持续时间或高度。取值范围为1 ~ 256。

L_UINTuDelay

颗粒化步骤之间的延迟,以毫秒为单位。

L_INT全国

波的速度。取值范围为1 ~ 256。该参数仅当uEffect参数来自Wave类。

L_INTnCycles

用于绘制波浪的循环或重复次数。该参数仅当uEffect参数来自Wave类。

L_UINT见血封喉

使用图案刷时传递数字。使用1表示一次粉刷。

L_UINTuMaxPass

一个图案刷的最大通行次数。使用1表示一次粉刷。

L_BOOLfTransparency

属性中指定的颜色的像素不绘制,从而实现透明度crTransparency参数;如果没有实现透明性,则为FALSE。

也就是说crTransparency

指定透明颜色的COLORREF值。

L_UINTuWandWidth

魔杖宽度,以像素为单位。

也就是说crWand

指定魔杖颜色的COLORREF值。

L_UINT32此外

用于显示的Windows ROP代码。该参数的代码与Windows BitBlt函数相同。对于普通绘画,使用SRCCOPY。

返回

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

评论

当你想要一个特殊的绘画效果时,使用这个函数作为Windows BitBlt C API函数的替代品。

使用uGrainuDelay参数来控制显示速度。uGrain参数控制绘画增量的大小,uDelay控制增量之间的时间。

魔杖是一个纯色条,在效果期间移动。小颗粒尺寸产生最好的魔杖效果。中列出的许多影响影响类型可以有一根魔杖。

使用见血封喉uMaxPass参数,以在多个通道中绘制图像。例如,如果你想要一个3-pass的油漆,使用uMaxPass的3和油漆3次,一次uPass = 1,一次uPass = 2,一次uPass = 3。

EFX_EFFECT_PUSH_CLASS的多通道绘制被禁用。

如果uEffect参数是旋转类,白色翻转类,翻转类,替换类,激光类,淡出正常类,淡出黑白类,淡出彩色类或波类,uPass和uMaxPass参数没有影响。

如果uEffect参数来自Fade Normal类、Fade Black and White类或Fade Color类,uGrain参数没有效果。但是,如果uEffect参数来自Wave类,则uGrain参数包含波的大小。

如果uEffect参数来自White Turnover类、Turnover类或Replace类,则uWandWidthcrWand参数无效。但是,如果uEffect参数来自Fade Color类,crWand参数包含位图颜色级别。

全国nCycles只有当uEffect参数来自Wave类时,参数才有效。

有关一般信息,请参阅执行特殊效果

必需的dll和库

平台

x64 Win32。

另请参阅

功能

主题

例子

这个函数展示了如何使用L_EfxEffectBlt绘制位图
到屏幕上使用一种特殊效果。

L_INT EfxEffectBltFirstExample(HWND HWND){L_INT nRet;HDC画;/*设备上下文当前窗口*/HDC hdcSrc;/*设备上下文源图像*/BITMAPHANDLE位图;/*图像将是BLT */HBITMAP hbmMem;/*图像将是BLT */hSavedPalette = NULL;/*当前系统面板的临时副本*/HPALETTE hPaintPal = NULL;/*我们将用来绘制*/的调色板L_INT nBitsPerPixel;/*获取设备上下文*/hdcDest = GetDC (hWnd);/*检查设备查看如果我们需要一个调色板nBitsPerPixel = GetDeviceCaps(hdcDest, BITSPIXEL) * GetDeviceCaps(hdcDest, PLANES);/*将图像加载到BLT *//*加载图像为屏幕位深*/nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT(“IMAGE1。CMP”)),位图,运算符(BITMAPHANDLE), (nBitsPerPixel <= 8) ?nBitsPerPixel: 24, ORDER_BGR, NULL, NULL);如果(nRet != SUCCESS)返回nRet;/*创建源DC */hd证监会= CreateCompatibleDC(hdcDest);/*将图像转换为DDB并将其选择为源dc */hbmMem = l_converttodb (hdcDest, &Bitmap);hbmMem = (HBITMAP)SelectObject(hd证监会,hbmMem);如果(nBitsPerPixel <=8){hPaintPal = L_CreatePaintPalette(hdcDest, &Bitmap);hSavedPalette = SelectPalette (hdcDest, hPaintPal, FALSE);/*实现调色板*/RealizePalette(画);}/*绘制图像使用nRet = L_EfxEffectBlt和3步*/nRet = L_EfxEffectBlt(hdcDest, /*句柄到目标dc */0, /*目标矩形左上角的x坐标*/0, /*目标矩形左上角的x坐标*/位图。宽度,/*目标矩形宽度*/位图。高度,/*目标矩形的高度*/hd证监会,/*句柄到源设备上下文*/0, /*源矩形左上角的x坐标*/0, /*源矩形左上角的纵坐标*/EFX_EFFECT_WIPE_L_TO_R, /*油漆效果使用*/1、/*晶粒尺寸*/1、/*磨粒步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/1、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*透明颜色,黑色*/3、/*棒宽度*/RGB(255,0,0), /*棒颜色,红色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;nRet = L_EfxEffectBlt(hdcDest, /*句柄到目标DC */0, /*目标矩形左上角的x坐标*/0, /*目标矩形左上角的x坐标*/位图。宽度,/*目标矩形宽度*/位图。高度,/*目标矩形的高度*/hd证监会,/*句柄到源设备上下文*/0, /*源矩形左上角的x坐标*/0, /*源矩形左上角的纵坐标*/EFX_EFFECT_WIPE_R_TO_L, /*油漆效果使用*/1、/*晶粒尺寸*/1、/*磨粒步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/2、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*透明颜色,黑色*/3、/*棒宽度*/RGB(255,0,0), /*棒颜色,红色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;nRet = L_EfxEffectBlt(hdcDest, /*句柄到目标dc */0, /*目标矩形左上角的x坐标*/0, /*目标矩形左上角的x坐标*/位图。宽度,/*目标矩形宽度*/位图。高度,/*目标矩形的高度*/hd证监会,/*句柄到源设备上下文*/0, /*源矩形左上角的x坐标*/0, /*源矩形左上角的纵坐标*/EFX_EFFECT_WIPE_L_TO_R, /*油漆效果使用*/1、/*晶粒尺寸*/1、/*磨粒步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/3、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*透明颜色,黑色*/3、/*棒宽度*/RGB(255,0,0), /*棒颜色,红色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;/*恢复旧的调色板*/如果(hPaintPal){SelectPalette (hdcDest, hSavedPalette, FALSE);DeleteObject (hPaintPal);}/*释放设备上下文*/release asedc (hWnd, hdcDest);DeleteDC (hdcSrc);DeleteObject (hbmMem);L_FreeBitmap(位图);返回成功;}/*这个函数展示了如何使用波浪效果的L_EfxEffectBltL_INT EfxEffectBltSecondExample(HWND HWND){L_INT nRet;HDC画;/*设备上下文当前窗口*/HDC hdcSrc;/*设备上下文源图像*/BITMAPHANDLE位图;/*图像将是BLT */HBITMAP hbmMem;/*图像将是BLT */hSavedPalette = NULL;/*当前系统面板的临时副本*/HPALETTE hPaintPal = NULL;/*我们将用来绘制*/的调色板L_INT nBitsPerPixel;/*获取设备上下文*/hdcDest = GetDC (hWnd);/*检查设备查看如果我们需要一个调色板nBitsPerPixel = GetDeviceCaps(hdcDest, BITSPIXEL) * GetDeviceCaps(hdcDest, PLANES);/*将图像加载到BLT *//*加载图像为屏幕位深*/nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT(“IMAGE1。CMP”)),位图,运算符(BITMAPHANDLE), (nBitsPerPixel <= 8) ?nBitsPerPixel: 24, ORDER_BGR, NULL, NULL);如果(nRet != SUCCESS)返回nRet;/*创建源DC */hd证监会= CreateCompatibleDC(hdcDest);/*将图像转换为DDB并将其选择为源dc */hbmMem = l_converttodb (hdcDest, &Bitmap);hbmMem = (HBITMAP)SelectObject(hd证监会,hbmMem);如果(nBitsPerPixel <=8){hPaintPal = L_CreatePaintPalette(hdcDest, &Bitmap);hSavedPalette = SelectPalette (hdcDest, hPaintPal, FALSE);/*实现调色板*/RealizePalette(画);}nRet = L_EfxEffectBlt(hdcDest, /*句柄到目标dc */0, /*目标矩形左上角的x坐标*/0, /*目标矩形左上角的x坐标*/位图。宽度,/*目标矩形宽度*/位图。高度,/*目标矩形的高度*/hd证监会,/*句柄到源设备上下文*/0, /*源矩形左上角的x坐标*/0, /*源矩形左上角的纵坐标*/EFX_EFFECT_WAVE_TB, /*渲染效果使用*/1、/*晶粒尺寸*/1、/*磨粒步骤之间的延迟*/20, /*波速*/1、/*循环次数或重复次数*/1、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*透明颜色,黑色*/3、/*棒宽度*/RGB(255,0,0), /*棒颜色,红色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;/*恢复旧的调色板*/如果(hPaintPal){SelectPalette (hdcDest, hSavedPalette, FALSE);DeleteObject (hPaintPal);}/*释放设备上下文*/release asedc (hWnd, hdcDest);DeleteDC (hdcSrc);DeleteObject (hbmMem);L_FreeBitmap(位图);返回成功;}

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