L_EfxPaintBitmap

# include“l_bitmap.h”

L_LTEFX_APIL_INTL_EfxPaintBitmap(hDC, pBitmap, pSrc, psrclip, pDest, pDestClip, uEffect, uGrain, uDelay, nSpeed, nCycles, uPass, uMaxPass, fTransparency, crTransparency, uWandWidth, crWand, uROP)

将位图绘制到目标设备上下文时应用效果。效果通常用于幻灯片的过渡,它指定图像是如何绘制的,而不是绘制完成时的外观。

参数

HDChDC

目标设备上下文的句柄。

pBITMAPHANDLEpBitmap

指向引用要绘制的位图的位图句柄的指针。

矩形* pSrc

指向Windows RECT结构的指针,该结构指定要用作显示源的位图部分。

RECT结构中的坐标是相对于位图的。您可以传递NULL来使用默认值,它与位图匹配。

矩形* pSrcClip

指向Windows RECT结构的指针,该结构指定要绘制的显示源的部分。通常,这用于在源位图的部分发生变化时更新显示。

RECT结构中的坐标是相对于位图的。您可以传递NULL来使用默认值,它与位图匹配。

矩形* pd

指向Windows RECT结构的指针,该结构决定源矩形如何缩放以及图像如何在设备上下文中定位。

RECT结构中的坐标是相对于设备上下文的。该参数没有默认值。必须指定RECT结构。

矩形* pDestClip

指向Windows RECT结构的指针,该结构指定要绘制的显示矩形的部分。通常,这用于更新显示表面的更改,例如当用户移动另一个窗口时,将显示被覆盖的图像的一部分。

RECT结构中的坐标是相对于设备上下文的。您可以传递NULL来使用默认值,它与设备上下文匹配。

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 发生错误。指返回代码

评论

若要在执行此函数期间更新状态栏或检测用户中断,请参阅L_SetStatusCallback

使用此函数代替L_PaintDCEffect当需要更多或不同的油漆效果时。

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

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

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

此函数使用的源矩形和目标矩形与L_PaintDC.有关矩形的完整解释,请参阅L_PaintDC

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

EFX_EFFECT_PUSH_CLASS的多通道绘制被禁用。

如果uEffect参数是旋转类、波浪类、白色翻转类、翻转类、替换类、激光类、正常渐隐类、黑白渐隐类、彩色渐隐类或波浪类见血封喉和uMaxPass参数没有影响。

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

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

全国而且nCycles参数仅当uEffect参数来自Wave类。

必需的dll和库

平台

x64 Win32。

另请参阅

功能

主题

例子

这个例子显示了使用L_EfxPaintBitmap的最低要求。

L_INT EfxPaintBitmapExample(HWND HWND,矩形* pd,BITMAPHANDLE * pBitmap)L_INT nRet;HDC HDC;/*设备上下文当前窗口*/hSavedPalette = NULL;/*当前系统面板的临时副本*/HPALETTE hOurPalette = NULL;/*我们将用来绘制*/的调色板L_INT nBitsPerPixel;/*获取设备上下文*/hdc = GetDC (hWnd);/*检查设备查看如果我们需要一个调色板nBitsPerPixel = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);如果(nBitsPerPixel <=8)hOurPalette = L_CreatePaintPalette (hdc, pBitmap);hSavedPalette = SelectPalette (hdc, hOurPalette, FALSE);/*实现调色板*/RealizePalette (hdc);/*绘制位图使用3步*/nRet = L_EfxPaintBitmap (hdc, /*设备上下文*/ .pBitmap, /*位图绘制*/NULL, /*源矩形*/NULL, /*源剪辑矩形*/pDest, /*目标矩形*/NULL, /*目标剪辑矩形*/EFX_EFFECT_WIPE4_L_R_T_B, /*效果应用于绘制过渡*/5、/*晶粒尺寸*/10, /*颗粒化步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/1、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*无透明颜色*/0, /*棒宽度*/0, /*没有魔杖颜色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;nRet = L_EfxPaintBitmap (hdc, /*设备上下文*/ .pBitmap, /*位图绘制*/NULL, /*源矩形*/NULL, /*源剪辑矩形*/pDest, /*目标矩形*/NULL, /*目标剪辑矩形*/EFX_EFFECT_WIPE_RECTANGLE_IN, /*效果应用于绘制过渡*/5、/*晶粒尺寸*/10, /*颗粒化步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/2、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*无透明颜色*/0, /*棒宽度*/0, /*没有魔杖颜色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;nRet = L_EfxPaintBitmap (hdc, /*设备上下文*/ .pBitmap, /*位图绘制*/NULL, /*源矩形*/NULL, /*源剪辑矩形*/pDest, /*目标矩形*/NULL, /*目标剪辑矩形*/EFX_EFFECT_WIPE_RECTANGLE_OUT, /*效果应用于绘制过渡*/5、/*晶粒尺寸*/10, /*颗粒化步骤之间的延迟*/0, /*波速*/0, /*循环次数或重复次数*/3、/*步数图案刷*/3、/*最大步长图案刷*/假的,/ *不使用透明度*/0, /*无透明颜色*/0, /*棒宽度*/0, /*没有魔杖颜色*/SRCCOPY);/* Windows光栅操作代码*/如果(nRet != SUCCESS)返回nRet;/*恢复旧的调色板*/如果(hOurPalette)SelectPalette (hdc, hSavedPalette, FALSE);DeleteObject (hOurPalette);/*释放设备上下文*/release asedc (hWnd, hdc);返回成功;

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