打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DrawDib函数

DrawDibBegin

描述:变一个DrawDib DC的参数或初始化一个新的DrawDib DC.

BOOL DrawDibBegin(

HDRAWDIB hdd,

HDC hdc,

int dxDest,

int dyDest,

LPBITMAPINFOHEADER lpbi,

int dxSrc,

int dySrc,

UINT wFlags

);

参数

hdd     DrawDib DC的句柄

hdc     绘图DC的句柄。此参数为可选。

dxDst   在MM_TEXT方式下目的矩形的宽度.

dyDst   在MM_TEXT方式下目的矩形的高度。

lpbi    包含图象格式的BITMAPINFOHEADER结构的地址。DIB颜色表紧跟图象格式,并且biHeight成员必须为一正值。

dxSrc   源矩形的宽度(以象素为单位)。

dySrc   源矩形的高度(以象素为单位)。

wFlags  函数调用的可用标志。定义了以下的值:

DDF_ANIMATE   

   允许调色板动画。如果这个值被设置,通过在LOGPALETTE结构中设置palPalEntry成员PC_RESERVED标志,则DrawDib保存了尽可能多的入口,调用drawDibChangePalette函数就可实现调色板动画。如果应用程序用了DrawDibBegin函数协同DrawDibDraw函数,最好在DrawDibBegin中设置这个值而不在DrawDibDraw中。

DDF_BACKGROUNDPAL

   实现作为背景的调色板,保留当前显示所使用的调色板不变。(这个值与DDF_SAME_HDC互斥。)

DDF_BUFFER

   使DrawDib使用屏幕缓冲,这样DDF_UPDATE才可使用。这关闭了解压和直接绘屏。如果DrawDib不能创建一个脱屏缓冲,就解压或直接绘屏。

DDF_DONTDRAW

   当前图象未绘,但已解压。DDF_UPDATE能够以后被用来绘图象。这个标志取代了DDF_PREROLL标志。

DDF_FULLSCREEN 不被支持。

DDF_HALFTONE

   不管DIB的调色板如何而把DIB抖动成标准调色板。如果应用程序用DrawDibBegin协同DrawDibDraw,在DrawDibBegin中设置这个值而不在DrawDibDraw中。

DDF_JUSTDRAWIT

   用GDI绘这图象。禁止DrawDib函数解压,拉伸或抖动图象。这实际上剥夺了DrawDib区别于StrechDIBits函数的能力。

DDF_SAME_DRAW

   让DrawDibDraw使用当前的绘制参数。只有当从使用DrawDibDraw或DrawDibBegin起,lpbi、dxDext、dyDest、dxSrc和dySrc就未改变才用这个值。这个标志取代了DDF_SAME_DIB和DDF_SAME_SIZE标志。

DDF_SAME_HDC

   使用当前DC句柄以及与当前句柄相关联的调色板。

DDF_UPDATE

   最后缓存的图象需要绘制。如果用这个值绘制失败,则缓冲的图象不在有效,并且在显示被更新前,需要指定一幅新的图象。

返回值

    成功返回TRUE,否则FALSE。

注这个函数准备由lpbi指定要绘往DC的DIB。图象已经拉伸成由dxDest和dyDest所指定的大小。如果dxDest和dyDest被设置成-1,DIB则被按原比例绘制。

可通过重新使用DrawDibBegin,指定新的标志和改变至少一个以下的设置:dxDest、dyDest、lpbi、dxSrc或dySrc来更新DrawDib DC的标志。

如果DrawDibBegin的参数未被改变,再次调用这个函数将不起作用。

DrawDibChangePalette

    这个函数设置绘DIB所用的调色板。

BOOL DrawDibChangePalette(

HDRAWDIB hdd,

int iStart,

int iLen,

LPPALETTEENTRY lppe

);

参数:

hdd    DrawDib DC的句柄。

iStart 调色板开始数。

iLen   调色板的数目。

lppe   调色板阵列的地址。

返回值

    成功返回TRUE,否则FALSE。

    注:只有当当前DrawDib调色板是调用DrawDibRealize函数实现时,这个函数改变物理调色板。

    如果颜色表没有改变,下次没有指定DDF_SAME_DRAW的DrawDibDraw函数将隐含地调用DrawDibBegin函数。

DrawDibClose

    这个函数关闭一个DrawDib DC并释放DrawDib申请的资源。

BOOL DrawDibClose(

HDRAWDIB hdd

);

参数

hdd    DrawDib DC的句柄。

返回值

    成功返回TRUE,否则FALSE。

DrawDibDraw

    这个函数将DIB绘至屏幕。

BOOL DrawDibDraw(

HDRAWDIB hdd,

HDC hdc,

int xDst,

int yDst,

int dxDst,

int dyDst,

LPBITMAPINFOHEADER lpbi,

LPVOID lpBits,

int xSrc,

int ySrc,

int dxSrc,

int dySrc,

UINT wFlags

);

参数

hdd    DrawDib DC的句柄。

hdc    DC的句柄。

xDst   在MM_TEXT坐标系,目标矩形左上角的x坐标

yDst   在MM_TEXT坐标系,目标矩形左上角的y坐标。

dxDst  在MM_TEXT坐标系下,目标矩形的宽度。如果dxDst为-1,则使用位图的宽度。

dyDst  在MM_TEXT坐标系下,目标矩形的高度。如果dyDst为-1,则使用位图的高度。

lpbi   包含图象格式的BITMAPINFOHEADER结构的地址。DIB的颜色表紧跟着格式后,并且biHeight成员必须为正值;DrawDibDraw不能绘制倒置的DIB。

lpbits 包含位图位的缓冲的地址。

xSrc   以象素为单位,源矩形左上角的x坐标。坐标(0,0)是位图的左上角。

ySrc   以象素为单位,源矩形左上角的y坐标。坐标(0,0)是位图的左上角。

dxSrc  以象素为单位,源矩形的宽度。

dySrc  以象素为单位,源矩形的高度。

wFlags 可用的绘图标志。如下值被定义:

DDF_BACKGROUNDPAL

   实现作为背景的调色板,保留当前显示所使用的调色板不变。这个值只有当DDF_SAME_HDC未被设置时才有效。

DDF_DONTDRAW

   当前图象已解压但未绘。这个标志取代了DDF_PREROLL标志。

DDF_FULLSCREEN 不被支持。

DDF_HALFTONE

   不管DIB的调色板如何而把DIB抖动成标准调色板。如果应用程序使用了DrawDibBegin,在DrawDibBegin中设置而不在DrawDibDraw中。

DDF_HURRYUP

   数据并不需要被绘(它可以被绘)并且DDF_UPDATE不用理会这个信息。DrawDib只有当需要去构建另一帧时才检查这个值;否则,这个值被忽略。

这个值通常用来同步视频和音频。当同步数据时,应用程序应当用这个值发送图象以防止驱动器需要缓冲帧来解压后续帧。

DDF_NOTKEYFRAME DIB数据不是关键帧。

DDF_SAME_HDC 使用当前DC句柄以及与当前句柄相关联的调色板。

DDF_SAME_DRAW

    让DrawDibDraw使用当前的绘制参数。只有当从使用DrawDibDraw或DrawDibBegin起,lpbi、dxDext、dyDest、dxSrc和dySrc就未改变才用这个值。DrawDibDraw经常检查这些参数,如果它们改变了,DrawDibBegin则准备绘图的DrawDib DC。这个标志取代了DDF_SAME_DIB和DDF_SAME_SIZE标志。

DDF_UPDATE

    最后缓存的图象需要绘制。如果用这个值绘制失败,则缓冲的图象不在有效,并且在显示被更新前,需要指定一幅新的图象。

返回值

成功返回TRUE,否则FALSE。

   注: DDF_DONTDRAW使DrawDibDraw解压但不显示一幅图象。一个调用DrawDibDraw的序列是指定DDF_UPDATE来显示图象。

如果DrawDib DC没有指定一个屏幕缓冲,指定DDF_DONTDRAW会造成这帧被立即绘到屏幕。序列调用DrawDibDraw指定DDF_UPDATE会失败。

尽管DDF_UPDAT和DDF_DONTDRAW可以在不同时间设置,它们可以一起用来创建脱屏图象。当脱屏图象完成后,可以调用DrawDibDraw来显示图象。

DrawDibEnd

描述:函数清除由DrawDibBegin或DrawDibDraw函数设置的标志和DrawDib DC的其它设置。

BOOL DrawDibEnd(

HDRAWDIB hdd

);

参数

    hdd 要释放的DrawDib DC的句柄。

返回值

    成功返回TRUE,否则FALSE。

DrawDibGetBuffer

    这个函数清除由DrawDib用来解压的缓冲的地址。

LPVOID DrawDibGetBuffer(

HDRAWDIB hdd,

LPBITMAPINFOHEADER lpbi,

DWORD dwSize,

DWORD dwFlags

);

参数

hdd     要释放的DrawDib DC的句柄。

lpbi    BITMAPINFO结构的地址。这个结构由BITMAPINFOHEADER结构和位图使用的256色调色板所定义的颜色表。

dwSize  通过lpbi的BITMAPINFO结构所指的字节大小。

dwFlags 保留,必须为0。

返回值

   返回缓冲的地址或者如果没有用到缓冲返回NULL。如果lpbi不为NULL,它填充了一个描绘缓冲的BITMAPINFO的结构。

DrawDibGetPalette

   这个函数清除由DrawDib DC所使用的调色板。

HPALETTE DrawDibGetPalette(

HDRAWDIB hdd

);

参数

hdd   要释放的DrawDib DC的句柄。

返回值

    成功返回一个调色板句柄,否则返回NULL。

注: 这个函数假设DrawDib DC包含了一个有效的调色板,隐含着这样的一个条件:对这个函数的调用必须在DrawDibDraw或DrawDibBegin函数之后。

DrawDibOpen

描述:这个函数打开DrawDib库为使用和创建一个绘图的DrawDib DC作准备。

HDRAWDIB DrawDibOpen(VOID);

参数

    这个函数不需要参数。

返回值

    成功返回一个DrawDib DC的句柄,否则为NULL。

注: 当同时绘多个DIB时,为同时在屏的每个图象创建一个DrawDib DC。

DrawDibProfileDisplay

    这个函数决定了当用DrawDib函数时显示系统的设置。

BOOL DrawDibProfileDisplay(

LPBITMAPINFOHEADER lpbi

);

参数

lpbi    包含位图信息的BITMAPINFOHEADER结构。可以通过指定NULL来确认配置信息是当前的。如果配置信息不是当前的,DrawDib会重新运行配置测试来得到当前设置信息。如果把这个参数设为NULL来调用DrawDibProfileDisplay返回值是没有意义的。

返回值

   返回值指出了这个显示系统的最快绘制和拉伸能力。如果位图格式不被支持,这个值为0或一个或更多的下列值:

PD_CAN_DRAW_DIB    DrawDib能用这种格式绘图象。拉伸可能被支持或不被支持。

PD_CAN_STRETCHDIB  DrawDib能用这种格式拉伸或绘制图象。

PD_STRETCHDIB _1_1_OK StretchDIBits用这种格式绘未拉伸的图象快于另一种方式。

PD_STRETCHDIB _1_2_OK StretchDIBits用这种格式绘以1:2拉伸的图象快于另一种方式。

PD_STRETCHDIB _1_N_OK StretchDIBits用这种格式绘以1:N拉伸的图象快于另一种方式。

DrawDibRealize

   这个函数为用指定DC实现DrawDib DC 的调色板。

UINT DrawDibRealize (

HDRAWDIB hdd ,

HDC hdc ,

BOOL fBackground

) ;

参数

hdd   DrawDib DC的句柄。

hdc   包含调色板的DC的句柄。

fBackground  背景调色板标志。如果此值非零,此调色板为背景调色板。如果此值为零并且DC与另一个窗口相连,当窗口拥有输入焦点时逻辑调色板变为背景调色板。(当窗口风格是CS_OWNDC或当DC是用GetDC函数得到的时,一个DC就与一个窗口相连)。

返回值

    返回在系统调色板中映射了不同值的逻辑调色板中的入口值。如果发生了错误或没有要更新的颜色,返回0。

注意:

用DrawDibDraw函数并指定DDF_BACKGROUNDPAL标志来选择DrawDib DC的调色板作背景调色板。

DrawDibSetPalette

   这个函数设置绘DIB所用的调色板。

BOOL DrawDibSetPalette(

HDRAWDIB hdd ,

HPALETTE hpal

) ;

参数

hdd    DrawDib DC的句柄。

hpal   调色板的句柄。指定NULL则使用缺省调色板。

返回值

    成功返回TRUE,否则返回FALSE。

DrawDibStart

DrawDibStart函数为流回放准备 DrawDib DC。

BOOL DrawDibStart

HDRAWDIB hdd ,

LONG rate

);

参数

hdd    DrawDib DC的句柄。

rate   回放率每帧以毫秒计。

返回值

     成功返回TRUE,否则返回FALSE。

DrawDibStop

     描述:这个函数释放用于流回放的DrawDib DC所占用的资源。

BOOL DrawDibStop(

HDRAWDIB hdd

);

参数

hdd    DrawDib DC的句柄。

返回值

成功返回TRUE,否则返回FALSE。

DrawDibTime

描述: 这个函数得到关于绘制操作的时间和调试操作的时间信息。

BOOL DrawDibTime(

HDRAWDIB hdd

LPDRAWDIBTIME lpddtime

) ;

参数

hdd       DrawDib DC的句柄。

lpddtime  DrawDibTime的结构地址。

返回值

    成功返回TRUE,否则返回FALSE。

注意

    这个函数只存在于W32软件开发库的调试版本。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DrawDib函数组的使用
DeleteDC() ReleaseDC()和DeleteObject()之间的区别
wmf格式
一些关于GDI+的文字——编程模式的变化
标函数(Cursor)
MFC:窗口和滚动条的基情
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服