c++ 图像平移画布变大

问题描述

/**************************************************************************函数名称:*TranslationDIB1()*参数:*LPSTRlpDIBBits-指向源DIB图像指针*LONGlWidth-源图像宽度(象素数)*LONGlHeight-源图像高度(象素数)*LONGlXOffset-X轴平移量(象素数)*LONGlYOffset-Y轴平移量(象素数)*返回值:*BOOL-平移成功返回TRUE,否则返回FALSE。*说明:*该函数用来水平移动DIB图像。函数不会改变图像的大小,移出的部分图像*将截去,空白部分用白色填充。************************************************************************/BOOLCDibImage::TranslationDIB1(LPSTRlpDIBBits,LONGlWidth,LONGlHeight,LONGlXOffset,LONGlYOffset){LPSTRlpSrc;//指向源图像的指针LPSTRlpDst;//指向要复制区域的指针LPSTRlpNewDIBBits;//指向复制图像的指针HLOCALhNewDIBBits;LONGi;//象素在新DIB中的坐标LONGj;LONGi0;//象素在源DIB中的坐标LONGj0;LONGlLineBytes;//图像每行的字节数lLineBytes=WIDTHBYTES(lWidth*8);//计算图像每行的字节数//暂时分配内存,以保存新图像hNewDIBBits=LocalAlloc(LHND,(lLineBytes+lXOffset)*(lHeight+lYOffset));if(hNewDIBBits==NULL){returnFALSE;}lpNewDIBBits=(char*)LocalLock(hNewDIBBits);for(i=0;i<lHeight;i++)//每行{for(j=0;j<lWidth;j++)//每列{//指向新DIB第i行,第j个象素的指针//注意由于DIB中图像第一行其实保存在最后一行的位置,因此lpDst//值不是(char*)lpNewDIBBits+lLineBytes*i+j,而是//(char*)lpNewDIBBits+lLineBytes*(lHeight-1-i)+jlpDst=(char*)lpNewDIBBits+lLineBytes*(lHeight-1-i)+j;////计算该象素在源DIB中的坐标i0=i-lXOffset;j0=j-lYOffset;//判断是否在源图范围内if((j0>=0)&&(j0<lWidth)&&(i0>=0)&&(i0<lHeight)){//指向源DIB第i0行,第j0个象素的指针//同样要注意DIB上下倒置的问题lpSrc=(char*)lpDIBBits+(lLineBytes)*(lHeight-1-i0)+j0;*lpDst=*lpSrc;//复制象素}else{//对于源图中没有的象素,直接赋值为255*((unsignedchar*)lpDst)=255;}}}//复制平移后的图像memcpy(lpDIBBits,lpNewDIBBits,(lLineBytes)*(lHeight));LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);returnTRUE;}怎么让我的画布变大成lWidth+lXOffsetlHeight+lYOffset

解决方案

解决方案二:
该函数用来水平移动DIB图像。函数不会改变图像的大小,移出的部分图像*将截去,空白部分用白色填充。就是改变图像大小,移出的部分不截去
解决方案三:
该回复于2011-12-12 11:39:15被版主删除

时间: 2024-10-25 14:15:38

c++ 图像平移画布变大的相关文章

【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解

       本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片空间几何变换,包括图像平移.图形旋转.图像反转倒置镜像和图像缩放的知识.同时文章比较详细基础,没有采用GDI+获取矩阵,而是通过读取BMP图片信息头和矩阵像素实现变换,希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生.        [数字图像处理]一.MFC详解显示BMP格式图片        [数字图像处理]二.

关于C#中picturebox用Autosize旋转图像后变大的问题

问题描述 我用C#窗体放了一个picturebox控件,设置autosize属性.我想旋转图像,以原点为中心逆时针旋转,可是旋转后的图像被放大了,不理解为什么图像会变大,求高手指教! 解决方案 解决方案二:不要使用AutoSize,用Image.Size获取实际尺寸解决方案三:用Gdi+winfrom控件本身不能旋转解决方案四:这不是很正常么.你用PS试试不就知道了,放个和画布一样大的长方形,旋转45度,看看会不会超出画布解决方案五:原来是我代码打错一个地方..解决方案六:图片旋转画布变大问题,

缩放-Android 摄像头动画效果变大缩小

问题描述 Android 摄像头动画效果变大缩小 有一个CameraPreview类继承自SurfaceView主要用来显示摄像头图像.然后非全屏把这个 个类放在一个ViewGroup里面(说白了就是一个某个尺寸大小的摄像头预览界面). 问题开始了,我用Android属性动画对这个ViewGroup扩大或缩小,然后ViewGroup是能 正常扩大或缩小,可摄像头预览界面显示的数据不会跟随扩大或缩小..怎么办? 代码如 animator = ObjectAnimator.ofFloat( mLin

为什么MathType编辑公式变大?

  MathType编辑公式变大的情况如下图所示: MathType编辑界面公式变大的情况 其实这个问题的解决很简单,具体操作如下: 1.按照自己的习惯打开MathType公式编辑器进入到公式编辑界面,或者直接在刚才按错的界面下保持不动. 2.在这个编辑界面中,用鼠标点击MathType菜单中的"视图"--"缩放"--"200%",这个时候你就会发现工作区域中变大的公式已经恢复到正常了.200%的比例是我们在正常工作时MathType的默认设置,

java-swing 实现类似QQ下拉框图片自由变大缩小

问题描述 swing 实现类似QQ下拉框图片自由变大缩小 swing jComboBox实现类似QQ下拉框图片自由变大缩小并加入关闭按钮[如何定位到按钮] 请提供思路和想法 谢谢你们....

ps怎么把眼睛变大

  原图: 效果图: ps将研究变大的具体操作步骤如下: 1.首先在原图的基本上按住ctrl+J拷贝一个图层, 2.现在开始对复制图层上面,在新建一个图层,并且填充%50的灰色,如图所示: 3.降低该灰色层透明度,使下面一层可以显现出来即可.如图所示: 4.分别用黑色画笔和白色画笔在灰色图上描出如下图所示: 5.把灰色图层透明度恢复到100%,然后保存为PSD文件. 6.刚刚保存为PSD文件后,原来的还没有关,不要关掉,现在你要把那个灰色图层的眼睛关掉,就是先出下面的背景副本图层. 7.执行"滤

用JS将网页窗口由小变大

js|网页 有没有这种经历,当你打开一个链接的时候,浏览器窗口由小变大,呈现一个渐变的过程.下面,我们就来介绍这种动态效果的由来,大家可要看仔细了. 这种程式的思路就是先根据浏览器的可利用的宽度和高度,算出一个中心坐标点,然后每次都把窗口定位到这个点上,再算出相应窗口的变大尺寸,循环50次,从而最终回到浏览器最大化时的状态. 在和之间插入下列代码: <SCRIPT LANGUAGE="javascript"> <!-- Begin function expand()

可牛影像眼睛变大功能制作眨眼美女

可牛影像中的美容功能不仅可以把眼睛变大也是可以把眼睛变小的哦 现在牛牛就教你利用眼睛变大的功能和自己制作闪图的功能 来制作动感眨眼美女 首先看一下效果图 原图 : 最终效果: 下面就来看一下具体的做法 第一步 打开一张美女的图片 找到美容--眼睛变大功能 第二步 分别将放大笔力度和大小调整好然后分别放在美女的两个眼睛中间点几个点到合适为止 第三步 调整好保存后 找到动感闪图功能中的自己制作闪图功能 点"添加一帧" 第四步 分别将原图和制作好的美女图添加进去 第五步 点预览闪图效果 调整

文字从小变大显示

 <html> <head> <title>网页特效|Linkweb.cn/Js|---文字从小变大显示</title> <style type="text/css"> <!-- body {  font-family: "宋体"; font-size: 9pt; margin-top: 0px; margin-left: 0px; margin-right: 0px} A { COLOR: blac