首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

自定义平移函数应用CImage类实现

2012-09-09 
自定义平移函数使用CImage类实现// 自定义平移函数,供调用lilizong@gmail.comlilizong-copyright-2012-8-5

自定义平移函数使用CImage类实现

// 自定义平移函数,供调用   lilizong@gmail.com  lilizong-copyright-2012-8-5bool CDIGTLSView::myTransform( int x, int y){//return false;if(myImage1.IsNull())OnOpenResourceFile();if(myImage2.IsNull()){//myImage2.Destroy();myImage2.Create(myImage1.GetWidth(),myImage1.GetHeight(),24,0);}COLORREF pixel; int maxY = myImage1.GetHeight();int maxX=myImage1.GetWidth();int r,g,b,avg; double c;byte* pRealData;byte* pRealData2;pRealData=(byte*)myImage1.GetBits();pRealData2=(byte*)myImage2.GetBits();int pit=myImage1.GetPitch();int pit2=myImage2.GetPitch();//需要注意,pit和pit2的值并不一样,所以如果使用一个值,会导致不同的结果出现//CString str;//str.Format(TEXT("%d"),pit);//MessageBox(str);//str.Format(TEXT("%d"),pit2);//MessageBox(str);int bitCount=myImage1.GetBPP()/8;int bitCount2=myImage2.GetBPP()/8;//CString str;//str.Format(TEXT("%d"),bitCount);//MessageBox(str);//str.Format(TEXT("%d"),bitCount2);//MessageBox(str);int newValue;int tempR,tempG,tempB;int key1,key2;  //用来控制方向//srand((unsigned)time(NULL)); //key1=rand()%100;//key2=rand()%100;//if(key1>50)//key1=-1;//else//key1=1;//if(key2<50)//key2=1;//else//key2=-1;//int xTrans=key1*rand()%(int)(maxX/1.5)+1;//int yTrans=key2*rand()%(int)(maxY/1.5)+1;int xTrans=x;int yTrans=y;//说明:将生产的图像作为24位图处理。for (int y=0; y<maxY; y++) {for (int x=0; x<maxX; x++) {if((y-yTrans>=0)&&(y-yTrans+2<=maxY)&&(x-xTrans>=0)&&(x-xTrans+2<=maxX)){tempR=(int)(int)(*(pRealData+pit*(y-yTrans)+(x-xTrans)*bitCount));if(bitCount==1){tempG=tempR;tempB=tempR;}else{tempG=(int)(int)(*(pRealData+pit*(y-yTrans)+(x-xTrans)*bitCount+1));tempB=(int)(int)(*(pRealData+pit*(y-yTrans)+(x-xTrans)*bitCount+2));}}else{tempR=255;tempG=0;tempB=0;}*(pRealData2+pit2*y+x*bitCount2)=tempR;*(pRealData2+pit2*y+x*bitCount2+1)=tempG;*(pRealData2+pit2*y+x*bitCount2+2)=tempB;}}Invalidate();return true;}





热点排行