8-图像放大

其实,就是开辟一个zoomwidth,zoomheight的内存,再分别赋值即可。

void CDib::Maginify(float xZoom, float yZoom)
{
//指向原图像指针
LPBYTE p_data = GetData();
//指向原像素的指针
LPBYTE lpSrc;
//指向缩放图像对应像素的指针
LPBYTE lpDst ;
//像素在原DIB的坐标
LONG i;
LONG j;
//循环变量(像素在新图中的坐标)
LONG i0;
LONG j0;
//图像的宽和高
LONG width = GetWidth();
LONG height = GetHeight();
//计算放缩后的图像宽度和高度
LONG newWidth = (LONG)(width * xZoom + 0.5);
LONG newHeight = (LONG)(height * yZoom + 0.5);
LONG newLineBytes = (newWidth * 8 + 31) / 32 * 4;
//暂时分配内存,以保存新图像
LPBYTE temp1 = new BYTE[newWidth * newHeight];
memset(temp1, (BYTE)255, newWidth * newHeight);
int r, g, b;
for (int i = 0; i < newWidth; i++)
{
for (int j = 0; j < newHeight; j++)
{
lpDst = (LPBYTE)temp1 + newWidth * j + i;
int i0 = (i / xZoom + 0.5);
int j0 = (j / yZoom + 0.5);
if ((i0 >=0 ) && ( i0 < width) && (j0 >= 0) && (j0 < height))
{
lpSrc = (LPBYTE)p_data + width * j0 + i0;
*lpDst = *lpSrc;
}
}
}
m_pData = temp1;
m_pBitmapInfoHeader->biWidth = newWidth;
m_pBitmapInfoHeader->biHeight = newHeight;

}
构造函数调用

CMy1_showbitmapView::CMy1_showbitmapView()
{
_cdib.LoadFile (“D:/Test/DataProcess/result.bmp”);
_cdib.Maginify(2.0, 2.0);
}
在这里插入图片描述

相关推荐

  1. uniapp 放大中间图标

    2024-03-15 05:34:09       54 阅读
  2. proteus8.9 示波器放大

    2024-03-15 05:34:09       41 阅读
  3. HTML单击图片独立放大

    2024-03-15 05:34:09       57 阅读
  4. Uniapp 点击图片放大

    2024-03-15 05:34:09       44 阅读
  5. qt,滚动条,放大缩小拖动图片

    2024-03-15 05:34:09       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 05:34:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 05:34:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 05:34:09       87 阅读
  4. Python语言-面向对象

    2024-03-15 05:34:09       96 阅读

热门阅读

  1. 前端框架的发展史

    2024-03-15 05:34:09       45 阅读
  2. Swift 单元测试

    2024-03-15 05:34:09       33 阅读
  3. 某小型外包—ETL工程师面试

    2024-03-15 05:34:09       39 阅读
  4. 2024年“新质生产力”是什么?新质生产力概述

    2024-03-15 05:34:09       43 阅读
  5. 在 Ubuntu 22.04 上源码安装 Podman 4

    2024-03-15 05:34:09       40 阅读