DrawDib函数组的使用(二)

DrawDib函数组的使用(二)

附:函数参考:

DrawDibBegin

这个DrawDib函数改变一个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的句柄。此参数为可选。

dxDstdyDst MM_TEXT方式下目的矩形的宽度和高度。

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

dxSrcdySrc 源矩形的宽度和高度(以象素为单位)。

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使用当前的绘制参数。只有当从使用DrawDibDrawDrawDibBegin起,lpbidxDextdyDestdxSrcdySrc就未改变才用这个值。这个标志取代了DDF_SAME_DIBDDF_SAME_SIZE标志。

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

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

返回值

成功返回TRUE,否则FALSE

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

可通过重新使用DrawDibBegin,指定新的标志和改变至少一个以下的设置:dxDestdyDestlpbidxSrcdySrc来更新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_DRAWDrawDibDraw函数将隐含地调用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的句柄。

xDstyDst MM_TEXT坐标系,目标矩形左上角的xy坐标。

dxDstdyDst MM_TEXT坐标系下,目标矩形的宽度和高度。如果dxDst-1,则使用位图的宽度;如果dyDst-1,则使用位图的高度。

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

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

xSrcySrc 以象素为单位,源矩形左上角的xy坐标。坐标(00)是位图的左上角。

dxSrcdySrc 以象素为单位,源矩形的宽度和高度。

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使用当前的绘制参数。只有当从使用DrawDibDrawDrawDibBegin起,lpbidxDextdyDestdxSrcdySrc就未改变才用这个值。DrawDibDraw经常检查这些参数,如果它们改变了,DrawDibBegin则准备绘图的DrawDib DC。这个标志取代了DDF_SAME_DIBDDF_SAME_SIZE标志。

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

返回值

成功返回TRUE,否则FALSE

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

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

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

DrawDibEnd

这个函数清除由DrawDibBeginDrawDibDraw函数设置的标志和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 通过lpbiBITMAPINFO结构所指的字节大小。

dwFlags 保留,必须为0

返回值

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

DrawDibGetPalette

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

HPALETTE DrawDibGetPalette(

HDRAWDIB hdd

);

参数

hdd 要释放的DrawDib DC的句柄。

返回值

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

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

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用这种格式绘以12拉伸的图象快于另一种方式。

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

DrawDibRealize

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

UINT DrawDibRealize (

HDRAWDIB hdd ,

HDC hdc ,

BOOL fBackground

) ;

参数

hdd DrawDib DC 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软件开发库的调试版本。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值