Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MFC-带StretchDIBits的模糊/像素化BMP_Mfc - Fatal编程技术网

MFC-带StretchDIBits的模糊/像素化BMP

MFC-带StretchDIBits的模糊/像素化BMP,mfc,Mfc,我正在使用StretchDIBits函数,在显示位图的过程中,我可以看到它以两种不同的方式显示,如下所示: 我正在做的唯一一件事是每当我获得新数据时更新BMP缓冲区 请在下面找到用于显示位图的关联代码 if (pBMPBuffer) { LPBITMAPINFO pBmpInfo; pBmpInfo = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)]; pBmpInf

我正在使用StretchDIBits函数,在显示位图的过程中,我可以看到它以两种不同的方式显示,如下所示:

我正在做的唯一一件事是每当我获得新数据时更新BMP缓冲区

请在下面找到用于显示位图的关联代码

if (pBMPBuffer)
{
    LPBITMAPINFO pBmpInfo;
    pBmpInfo = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)];

    pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    pBmpInfo->bmiHeader.biWidth = m_iZSize;
    pBmpInfo->bmiHeader.biHeight = m_iXSize;
    pBmpInfo->bmiHeader.biPlanes = 1;
    pBmpInfo->bmiHeader.biBitCount = 32;
    pBmpInfo->bmiHeader.biCompression = BI_RGB;
    pBmpInfo->bmiHeader.biSizeImage = m_iXSize * m_iZSize;
    pBmpInfo->bmiHeader.biXPelsPerMeter = 0;
    pBmpInfo->bmiHeader.biYPelsPerMeter = 0;
    pBmpInfo->bmiHeader.biClrUsed = 0;
    pBmpInfo->bmiHeader.biClrImportant = 0;

    SetStretchBltMode(pDC->m_hDC, STRETCH_HALFTONE);
    StretchDIBits(pDC->m_hDC,
                  rectBMP.left,
                  rectBMP.top,
                  rectBMP.Width(),
                  rectBMP.Height(),
                  0,
                  0,
                  m_iZSize,
                  m_iXSize,
                  pBMPBuffer,
                  pBmpInfo,
                  DIB_RGB_COLORS,
                  SRCCOPY);

    delete[] pBmpInfo;
}
我希望位图始终具有“模糊”外观。
提前感谢。

您可以使用GDI+代替GDI,并选择缩放或旋转图像时使用的双三次插值算法


请注意,GDI+将比GDI慢。。另一个选项是使用OpenGL,例如…

您可以使用GDI+而不是GDI,并选择在缩放或旋转图像时使用的双三次插值算法


请注意,GDI+将比GDI慢。。另一个选项是使用OpenGL,例如…

文档中规定,在
SetStretchBltMode
之后,您应该始终使用
SetBrushOrgEx
,您尝试过吗?您好,我刚刚尝试过,现在它只显示“仅”像素类型。你知道我怎样才能得到“模糊”的答案吗?对不起,如果我知道的话,我会回答这个问题的。我唯一能提出的建议是将参数更改为
SetBrushOrgEx
。这很像半色调失败是有原因的。当我得到答案时,我会继续检查并张贴在这里。谢谢Mark。文档中说明您应该始终在
SetStretchBltMode
之后使用
SetBrushOrgEx
,您尝试过吗?嗨,Mark,我刚刚尝试过,现在它只显示“仅”像素类型。你知道我怎样才能得到“模糊”的答案吗?对不起,如果我知道的话,我会回答这个问题的。我唯一能提出的建议是将参数更改为
SetBrushOrgEx
。这很像半色调失败是有原因的。当我得到答案时,我会继续检查并张贴在这里。谢谢你,马克,这很有效。我使用了DrawImage的图形方法来显示位图。谢谢,这很有效。我使用了DrawImage的图形方法来显示位图。谢谢