关于windows绘图函数StretchDIBits

windows系统下,可以使用StretchDIBits将一个与设备无关点阵图放大或者缩小的方式显示出来。

StretchDIBits的原型为:

iLines = StretchDIBits (
                   hdc,             // device context handle
                   xDst,            // x destination coordinate
                   yDst,            // y destination coordinate
                   cxDst,           // destination rectangle width
                   cyDst,           // destination rectangle height
                   xSrc,            // x source coordinate
                   ySrc,            // y source coordinate
                   cxSrc,           // source rectangle width
                   cySrc,           // source rectangle height
                   pBits,           // pointer to DIB pixel bits
                   pInfo,           // pointer to DIB information
                   fClrUse,         // color use flag
                   dwRop) ;    // raster operation

在windows里,图像的坐标远点是位于左上角,向右为X递增,向下为Y递增。设定图像位置的时候,先确定显示的坐标点,也就是(xDst, yDst),然后设定cxDst和cyDst,这两个参数可以改变符号,改变一次符号意味着图像的方向改变一次。例如高度,如果为正的话,图像显示的时候从上往下绘图,如果为负的话从下往上绘图。一定要把坐标和方向结合起来设置,否则图像显示会出问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StretchDIBits是GDI中的一个函数,用于将一个设备无关位图(DIB)拉伸到指定大小并显示在指定设备上下文中。它的原型为: ```c++ int StretchDIBits( HDC hdc, int xDest, int yDest, int DestWidth, int DestHeight, int xSrc, int ySrc, int SrcWidth, int SrcHeight, const void *lpBits, const BITMAPINFO *lpbmi, UINT iUsage, DWORD rop ); ``` 参数说明: - hdc:目标设备上下文的句柄。 - xDest:目标矩形左上角的X坐标。 - yDest:目标矩形左上角的Y坐标。 - DestWidth:目标矩形的宽度。 - DestHeight:目标矩形的高度。 - xSrc:源矩形左上角的X坐标。 - ySrc:源矩形左上角的Y坐标。 - SrcWidth:源矩形的宽度。 - SrcHeight:源矩形的高度。 - lpBits:指向DIB数据的指针。 - lpbmi:指向BITMAPINFO结构体的指针,描述DIB的格式。 - iUsage:指定DIB的颜色使用方式,取值为DIB_RGB_COLORS或DIB_PAL_COLORS。 - rop:光栅操作码,用于指定如何操作源和目标矩形的位。常用的光栅操作码有SRCCOPY(源位图复制到目标位图)、SRCAND(源位图与目标位图进行逻辑与操作)、SRCINVERT(源位图和目标位图进行逻辑异或操作)等。 示例代码: ```c++ // 创建设备上下文和位图信息 HDC hdc = GetDC(hwnd); BITMAPINFO bitmapInfo; ZeroMemory(&bitmapInfo, sizeof(bitmapInfo)); bitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bitmapInfo.bmiHeader.biWidth = nWidth; bitmapInfo.bmiHeader.biHeight = nHeight; bitmapInfo.bmiHeader.biPlanes = 1; bitmapInfo.bmiHeader.biBitCount = 24; bitmapInfo.bmiHeader.biCompression = BI_RGB; bitmapInfo.bmiHeader.biSizeImage = nWidth * nHeight * 3; // 将DIB数据拉伸并显示在设备上下文中 StretchDIBits(hdc, nXDest, nYDest, nDestWidth, nDestHeight, nXSrc, nYSrc, nSrcWidth, nSrcHeight, pBuffer, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY); // 释放设备上下文 ReleaseDC(hwnd, hdc); ``` 上述代码将DIB数据pBuffer拉伸到指定的大小并显示在hwnd设备上下文中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值