亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jihebianhuandib.cpp

?? VC++圖像處理程程序設計這本的配套光盤
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
#include "windowsx.h"
#include "math.h"
#include "JiHeBianHuanDib.h"
#include "MainFrm.h"
#include "DynSplitView2.h"
 
#define PI 3.1415926535
#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 

#define RADIAN(angle) ((angle)*PI/180.0) //角度到弧度轉化的宏

JiHeBianHuanDib::JiHeBianHuanDib()
{

}

JiHeBianHuanDib::~JiHeBianHuanDib()
{

}

///***************************************************************/           
/*函數(shù)名稱:JingXiang(bool fangshi)                                        
/*函數(shù)類型:void
/*參數(shù)說明:fangshi --判斷標志為 true 水平鏡像,為 false 垂直鏡像                                      
/*功能:對圖像進行鏡像顯示。            
/***************************************************************/ 
void JiHeBianHuanDib::JingXiang(bool fangshi)
{
    // 指向源圖像的指針
	LPBYTE	lpSrc;
	LPBYTE  p_data;
	// 指向要復制區(qū)域的指針
	LPBYTE	lpDst;
	// 指向復制圖像的指針
	LPBYTE	temp;
	// 循環(huán)變量
	LONG	i;
	LONG	j;
	//圖像的高與寬
	long height=this->GetHeight();
	long wide=this->GetWidth();
	p_data=this->GetData();
	// 暫時分配內存,以保存一行圖像
	temp = new BYTE[wide*height];
	// 判斷鏡像方式
	if (fangshi)		// 水平鏡像
	{
		if (m_pBitmapInfoHeader->biBitCount<9)		//灰度圖像
		{
			// 針對圖像每行進行操作
			for(j = 0; j < height; j++)
			{
				for(i = 0; i <  wide;i++)
				{
					lpSrc = (LPBYTE)p_data +wide *j + i;
					lpDst = (LPBYTE)temp + wide* j+ wide - i;
					*lpDst = *lpSrc;
				}
			}
			memcpy(p_data,temp, wide*height);
		}
		else	//24位彩色
		{
			wide=this->GetDibWidthBytes();
			temp=new BYTE[height*wide];
			// 針對圖像每行進行操作
			for(j = 0; j < height; j++)
			{
				for(i = 0; i <  wide;i=i+3)
				{
					lpSrc = (LPBYTE)(p_data +wide *j + i);
					lpDst = (LPBYTE)temp + wide* j+ wide - i;
					*(lpDst) = *lpSrc;
					*(lpDst+1) = *(lpSrc+1);
					*(lpDst+2) = *(lpSrc+2);
				}			
			}
			memcpy(p_data,temp, wide*height);
		}		
	}
	else		// 垂直鏡像
	{
       	if (m_pBitmapInfoHeader->biBitCount<9)		//灰度圖像
		{
			// 針對上半圖像進行操作
			for(i = 0; i <  wide;i++)
			{
				for(j = 0; j < height; j++)
				{
					lpSrc = (LPBYTE)p_data + wide * j+i;
					lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;
					*lpDst = *lpSrc;
				}
			}
			memcpy(p_data,temp, wide*height);	       
		}
		else	//24位彩色		
		{
			wide=this->GetDibWidthBytes();
			temp=new BYTE[height*wide];
			// 針對上半圖像進行操作
			for(i = 0; i <  wide;i++)
			{
				for(j = 0; j < height; j++)
				{
					lpSrc = (LPBYTE)p_data + wide * j+i;
					lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;
					*lpDst = *lpSrc;
				}
			}
			memcpy(p_data,temp, wide*height);
			// 釋放內存
			delete temp;		
		}	   
	}
}

///***************************************************************/           
/*函數(shù)名稱:Zhuanzhi()                                        
/*函數(shù)類型:void                                     
/*功能:對圖像進行轉置處理。            
/***************************************************************/
void JiHeBianHuanDib::Zhuanzhi()
{
	// 圖像的寬度和高度
	LONG	wide=this->GetWidth();
	LONG	height=this->GetHeight();
	//圖像每行字節(jié)數(shù)
	LONG lLineBytes=(((wide*8)+31)/32*4);
	//新圖像每行字節(jié)數(shù)
    LONG lNewLineBytes=(((height*8)+31)/32*4);
	// 指向源圖像的指針
	LPBYTE	p_data=this->GetData();
	// 指向源象素的指針
	LPBYTE	lpSrc;
	// 指向轉置圖像對應象素的指針
	LPBYTE	lpDst;
	// 指向轉置圖像的指針
	LPBYTE	temp;	
	// 循環(huán)變量
	LONG	i;
	LONG	j;
	if (m_pBitmapInfoHeader->biBitCount<9)		//灰度圖像
	{ 
		//分配內存
		temp=new BYTE[wide*lNewLineBytes];
		
		// 針對圖像每行進行操作
		for(j = 0; j < height; j++)
		{
			// 針對每行圖像每列進行操作
			for(i = 0; i < wide;i++)
			{
				// 指向源DIB第j行,第i個象素的指針
				lpSrc = (LPBYTE)p_data+ lLineBytes * j + i;
				// 指向轉置DIB第i行,第j個象素的指針
				// 注意此處wide和height是源DIB的寬度和高度,應該互換
				lpDst = (LPBYTE)temp + lNewLineBytes* i+ j;
				// 復制象素
				*lpDst = *lpSrc;
			}
		}
		m_pBitmapInfoHeader->biHeight=wide;
		m_pBitmapInfoHeader->biWidth=height;
		// 復制轉置后的圖像
		memcpy(p_data, temp, wide* height);
		// 釋放內存
		delete  temp;
	}
	else	//24位彩色
	{
		lLineBytes=wide*3;
		lNewLineBytes=height*3;
		temp=new BYTE[wide*lNewLineBytes];
		// 針對圖像每行進行操作
		for(j = 0; j < height; j++)
		{
			// 針對每行圖像每列進行操作
			for(i = 0; i < wide;i++)
			{
				// 指向源DIB第j行,第i個象素的指針
				lpSrc = (LPBYTE)p_data+ lLineBytes * j + i*3;
				// 指向轉置DIB第i行,第j個象素的指針
				// 注意此處wide和height是源DIB的寬度和高度,應該互換
				lpDst = (LPBYTE)temp +lNewLineBytes* i+ j*3;
				// 復制象素
				*lpDst++ = *lpSrc++;
				*lpDst++ = *lpSrc++;
				*lpDst = *lpSrc;			
			}		
		}
		m_pBitmapInfoHeader->biHeight=wide;
		m_pBitmapInfoHeader->biWidth=height;
		// 復制轉置后的圖像
		memcpy(p_data, temp, wide* height*3);	
		// 釋放內存
		delete  temp;
	}
}

///***************************************************************/           
/*函數(shù)名稱:Xuanzhuan(int RotateAngle)                                        
/*函數(shù)類型:void
/*參數(shù)說明:RotateAngle --旋轉角度                                     
/*功能:對圖像進行旋轉處理。            
/*****************************************************************/
void JiHeBianHuanDib::Xuanzhuan(double RotateAngle)
{
    DWORD        OffBits,SrcBufSize,DstBufSize,DstLineBytes;
    LPBYTE       lpTempPtr,lpPtr,lpSrc,lpTemp;
    double       SrcX1,SrcY1,SrcX2,SrcY2;
    double       SrcX3,SrcY3,SrcX4,SrcY4;
    double       DstX1,DstY1,DstX2,DstY2;
    double       DstX3,DstY3,DstX4,DstY4;
    DWORD        x0,y0,x1,y1;
    double       cosa,sina; 
    double       num1,num2;
    int          LineBytes;
	//角度到弧度的轉化
    RotateAngle=(double)RADIAN(RotateAngle);
    cosa=(double)cos((double)RotateAngle);
    sina=(double)sin((double)RotateAngle);
    //原圖的寬度和高度
    lpSrc=this->GetData();
    int Wold=this->GetWidth();
    int Hold=this->GetHeight();
    //原圖的四個角的坐標
	SrcX1=(double)(-0.5*Wold);
	SrcY1=(double)(0.5*Hold);
	SrcX2=(double)(0.5*Wold);
	SrcY2=(double)(0.5*Hold);
	SrcX3=(double)(-0.5*Wold);
	SrcY3=(double)(-0.5*Hold);
	SrcX4=(double)(0.5*Wold);
	SrcY4=(double)(-0.5*Hold);
	//新圖四個角的坐標
	DstX1=cosa*SrcX1+sina*SrcY1;
	DstY1=-sina*SrcX1+cosa*SrcY1;
	DstX2=cosa*SrcX2+sina*SrcY2;
	DstY2=-sina*SrcX2+cosa*SrcY2;
	DstX3=cosa*SrcX3+sina*SrcY3;
	DstY3=-sina*SrcX3+cosa*SrcY3;
	DstX4=cosa*SrcX4+sina*SrcY4;
	DstY4=-sina*SrcX4+cosa*SrcY4;
	//計算新圖的寬度,高度
	int Wnew = (DWORD)(max(fabs(DstX4-DstX1), fabs(DstX3-DstX2))+0.5);
	int Hnew = (DWORD)(max(fabs(DstY4-DstY1), fabs(DstY3-DstY2))+0.5);
	//計算矩陣(2.9)中的兩個常數(shù),這樣不用以后每次都計算了
	num1=(double)( -0.5*Wnew*cosa-0.5*Hnew*sina+0.5*Wold);
	num2=(double)(0.5*Wnew*sina-0.5*Hnew*cosa+0.5*Hold);
	if(m_pBitmapInfoHeader->biBitCount<9)		//灰度圖像
	{
		//將新的緩沖區(qū)中的每個字節(jié)都填成255,這樣以后未處理的象素就是白色
		DstBufSize=Wnew*Hnew;
		lpTempPtr=new BYTE[Wnew*Hnew];
		memset(lpTempPtr,(BYTE)255,Wnew*Hnew);
		lpTemp=lpTempPtr;
		for(y1=0;y1<Hnew;y1++)
		{
			for(x1=0;x1<Wnew;x1++)
			{
				//x0,y0為對應的原圖上的坐標
				x0= (DWORD)(x1*cosa+y1*sina+num1);
				y0= (DWORD)(-1.0f*x1*sina+y1*cosa+num2);
				if( (x0>=0) && (x0<Wold) && (y0>=0) && (y0<Hold))   //在原圖范圍內
				{
					lpPtr=lpSrc+y0*Wold+x0;
					lpTempPtr=lpTemp+y1*Wnew+x1;
					*lpTempPtr=*lpPtr; //進行象素的復制
					lpTempPtr=lpTemp;
				}
			}
		}
		this->SetWidth(Wnew);
		this->SetHeight(Hnew);
		this->m_pData=lpTemp;
	}
	else	//24位彩色
	{
		//將新的緩沖區(qū)中的每個字節(jié)都填成255,這樣以后未處理的象素就是白色
		DstBufSize=Wnew*Hnew*3;
		lpTempPtr=new BYTE[Wnew*Hnew*3];
		memset(lpTempPtr,(BYTE)255,Wnew*Hnew*3);
		lpTemp=lpTempPtr;
		for(y1=0;y1<Hnew;y1++)
		{
			for(x1=0;x1<Wnew;x1++)
			{
				//x0,y0為對應的原圖上的坐標
				x0= (DWORD)(x1*cosa+y1*sina+num1);
				y0= (DWORD)(-1.0f*x1*sina+y1*cosa+num2);
				if((x0>=0) && (x0<Wold) && (y0>=0) && (y0<Hold))   //在原圖范圍內
				{
					lpPtr=lpSrc+y0*Wold*3+x0*3;
					lpTempPtr=lpTemp+y1*Wnew*3+x1*3;					
					*lpTempPtr++=*lpPtr++; //進行象素的復制
					*lpTempPtr++=*lpPtr++; //進行象素的復制
					*lpTempPtr=*lpPtr; //進行象素的復制
					lpTempPtr=lpTemp;
				}
			}
		}
		this->SetWidth(Wnew);
		this->SetHeight(Hnew);
		this->m_pData=lpTemp;
	}
}

void JiHeBianHuanDib::clearmem2()
{
	LONG temp;
	temp=m_pBitmapInfoHeader->biHeight;
    m_pBitmapInfoHeader->biHeight=m_pBitmapInfoHeader->biWidth;
	m_pBitmapInfoHeader->biWidth=temp;
}

///***************************************************************/           
/*函數(shù)名稱:Suofang(float xzoom, float yzoom)                                        
/*函數(shù)類型:void
/*參數(shù)說明:xzoom --水平縮小的比率
/*          yzoom --垂直縮小的比率                                     
/*功能:對圖像進行縮放處理。            
/*****************************************************************/
void JiHeBianHuanDib::SuoXiao(float xzoom, float yzoom)
{
    // 源圖像的寬度和高度
	LONG	wide;
	LONG	height;
	LONG    LineBytes;
	// 縮放后圖像的寬度和高度
	LONG	newwide;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频免费观看| 3d动漫精品啪啪一区二区竹菊| 91免费观看视频在线| 91麻豆精品国产91久久久 | 蜜臀久久久久久久| 成人午夜视频网站| 欧美精品粉嫩高潮一区二区| 在线观看不卡一区| 午夜久久福利影院| 亚洲欧美视频在线观看| 久久综合色综合88| 亚洲欧美日韩国产成人精品影院| 亚洲18女电影在线观看| 99久久夜色精品国产网站| 精品三级在线看| 日韩精品每日更新| 日本乱码高清不卡字幕| 欧美国产国产综合| 国模少妇一区二区三区| 91精品国产免费久久综合| 一级做a爱片久久| 在线视频一区二区免费| 亚洲色图.com| 91麻豆免费观看| 亚洲视频在线一区观看| av在线这里只有精品| 中文字幕av资源一区| 国产永久精品大片wwwapp| 日韩一区二区三区在线观看| 午夜精品久久久久久久99水蜜桃| 色综合久久中文综合久久97| 国产精品成人在线观看| 99久久综合色| 亚洲美女在线一区| 色又黄又爽网站www久久| 亚洲精品自拍动漫在线| 91蜜桃在线观看| 亚洲男人电影天堂| 色吊一区二区三区| 亚洲二区视频在线| 欧美精品久久久久久久多人混战| 婷婷综合久久一区二区三区| 4438成人网| 精品一区二区三区在线播放视频| 2020国产精品自拍| 成人免费视频一区二区| 国产精品久久久久久久裸模| 99精品视频一区二区三区| 中文字幕在线不卡| 在线观看网站黄不卡| 亚洲高清免费视频| 日韩欧美一区二区不卡| 国产精品一卡二卡| 亚洲免费三区一区二区| 欧美欧美欧美欧美| 国产一区二区三区综合| 中文久久乱码一区二区| 在线观看www91| 韩国v欧美v亚洲v日本v| 综合精品久久久| 欧美综合一区二区三区| 欧美老人xxxx18| 精品福利一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲综合色婷婷| 欧美日韩国产一区二区三区地区| 久久av资源站| 亚洲天堂av老司机| 日韩三级在线观看| 成人的网站免费观看| 午夜久久久久久久久久一区二区| 2021久久国产精品不只是精品| 99精品久久免费看蜜臀剧情介绍| 无吗不卡中文字幕| 久久久久综合网| 欧美日韩国产123区| 国产99久久久精品| 日韩精品高清不卡| 日韩一区二区三区在线观看| 91精品国产综合久久国产大片 | 亚洲精品日韩一| 日韩精品电影在线观看| 懂色av一区二区在线播放| 国产精品系列在线| 在线观看视频91| 成人国产亚洲欧美成人综合网| 日韩经典中文字幕一区| 亚洲婷婷国产精品电影人久久| 欧美变态口味重另类| 色综合中文字幕国产 | 欧美日韩高清一区二区不卡| 国产成人av影院| 免费成人在线影院| 亚洲狠狠爱一区二区三区| 国产欧美一区二区精品久导航| 欧美日韩亚洲另类| 91麻豆免费观看| 日韩综合在线视频| 激情欧美一区二区| 欧美日韩国产免费一区二区| 国产欧美日韩在线观看| 欧美精品一区二区精品网| 懂色av中文字幕一区二区三区| 国产乱一区二区| 九九九精品视频| 日韩精品免费视频人成| 肉丝袜脚交视频一区二区| 亚洲成人免费看| 亚洲第一在线综合网站| 亚洲国产aⅴ天堂久久| 伊人一区二区三区| 亚洲欧美另类久久久精品| 亚洲欧洲精品一区二区精品久久久 | 久久国产综合精品| 麻豆freexxxx性91精品| 免费视频一区二区| 青青草伊人久久| 日韩一区欧美二区| 日韩av成人高清| 免费看黄色91| 国产乱码精品一区二区三区忘忧草| 丝袜美腿一区二区三区| 日韩av一二三| 国产一本一道久久香蕉| 国产精品综合二区| 成人午夜av在线| 色悠悠亚洲一区二区| 欧美午夜精品理论片a级按摩| 在线观看视频一区| 欧美日本韩国一区| 欧美大尺度电影在线| 精品福利视频一区二区三区| 国产亚洲欧美日韩在线一区| 国产日韩欧美一区二区三区乱码| 国产午夜精品在线观看| 自拍偷拍亚洲综合| 午夜伦欧美伦电影理论片| 精品中文av资源站在线观看| 国产99一区视频免费| 91国偷自产一区二区三区观看| 欧美巨大另类极品videosbest| 日韩三级av在线播放| 日本一区二区三区电影| 一色屋精品亚洲香蕉网站| 一级日本不卡的影视| 免费成人小视频| 成人ar影院免费观看视频| 欧美专区亚洲专区| 久久这里只精品最新地址| 国产精品国产三级国产普通话三级| 一级中文字幕一区二区| 久久www免费人成看片高清| 99久久99久久免费精品蜜臀| 91精品国产综合久久久久久漫画 | 蜜桃视频在线观看一区| 成人免费高清视频在线观看| 在线观看一区不卡| 久久精品亚洲一区二区三区浴池| 亚洲欧洲av在线| 琪琪久久久久日韩精品| 97aⅴ精品视频一二三区| 欧美一区二视频| 国产精品嫩草影院com| 视频一区视频二区中文字幕| 福利电影一区二区三区| 91精品国产免费| 亚洲欧美日本在线| 国产精品123区| 777久久久精品| 亚洲男女毛片无遮挡| 激情小说欧美图片| 欧美人妖巨大在线| 亚洲激情中文1区| 国产不卡视频一区| 日韩欧美视频一区| 亚洲国产综合人成综合网站| 风间由美性色一区二区三区| 日韩亚洲欧美综合| 午夜成人免费视频| 91久久精品一区二区三| 国产精品丝袜黑色高跟| 国产乱码精品一区二区三区忘忧草 | 性做久久久久久免费观看| 成人av资源在线| 国产日韩欧美综合一区| 精品一二三四在线| 在线播放一区二区三区| 亚洲制服丝袜在线| 99久久精品国产导航| 国产欧美精品一区| 国产不卡视频在线播放| 久久久亚洲欧洲日产国码αv| 日韩av一区二区三区四区| 欧美日韩另类国产亚洲欧美一级| 日韩毛片高清在线播放| a在线播放不卡| 成人欧美一区二区三区小说 | 欧美日韩一区二区三区不卡| 亚洲美女偷拍久久| 97精品电影院|