?? dynsplitview2.cpp
字號:
{
*temp1=(*temp2)*(n)/256;
temp1++;
temp2++;
}
}
::StretchDIBits(pDC->GetSafeHdc(),0, 0, bitmapWidth, bitmapHeight,
0, 0, bitmapWidth, bitmapHeight,
temp,pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(10);
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
delete temp;
}
else
{
LPBYTE temp;
temp=new BYTE[CDibNew1->GetHeight()*CDibNew1->GetWidth()*3];
memset (temp,0,CDibNew1->GetHeight()*CDibNew1->GetWidth()*3);
for(int m=0;m<256;m++)
{
for(int j = 0; j < bitmapHeight; j++)
{
for(int i = 0; i < bitmapWidth; i ++)
{
temp[j*bitmapWidth*3+i*3]=pBitmapData[j*bitmapWidth*3+i*3]*(m)/256;
temp[j*bitmapWidth*3+i*3+1]=pBitmapData[j*bitmapWidth*3+i*3+1]*(m)/256;
temp[j*bitmapWidth*3+i*3+2]=pBitmapData[j*bitmapWidth*3+i*3+2]*(m)/256;
}
}
::StretchDIBits(pDC->GetSafeHdc(),
0, 0, bitmapWidth, bitmapHeight,
0, 0, bitmapWidth, bitmapHeight,
temp, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(20);
}
delete temp;
}
}
}
/*水平右移特效顯示*/
void CDynSplitView2::OnYouyi()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//復(fù)制圖像數(shù)據(jù)
clearmem();
CDSplitDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//進行右移處理
if(!pDoc ->statedoc&&state2==1)
{
BYTE* pBitmapData = CDibNew1->GetData();
LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
int bitmapHeight = CDibNew1->GetHeight();
int bitmapWidth = CDibNew1->GetWidth();
if (CDibNew1->GetRGB()) // Has a color table
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int i=0;i<=bitmapWidth;i++)
{
for(int j=0;j<=bitmapHeight;j=j+8)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j-8 , i+1, 8,
bitmapWidth-i, bitmapHeight-j, i+1, 8,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int i=0;i<=bitmapWidth;i++)
{
for(int j=0;j<=bitmapHeight;j=j+8)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j-8 , i+1, 8,
bitmapWidth-i, bitmapHeight-j, i+1, 8,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
}
}
}
Invalidate();
}
/*中間擴張?zhí)匦э@示*/
void CDynSplitView2::OnZhongJianKuoZhang()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//復(fù)制圖像數(shù)據(jù)
clearmem();
CDSplitDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//進行中間擴張?zhí)幚? if(!pDoc ->statedoc&&state2==1)
{
BYTE* pBitmapData = CDibNew1->GetData();
LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
int bitmapHeight = CDibNew1->GetHeight();
int bitmapWidth = CDibNew1->GetWidth();
if (CDibNew1->GetRGB()) // Has a color table
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int i=0;i<=bitmapWidth/2;i++)
{
::StretchDIBits(pDC->GetSafeHdc(),0 , bitmapHeight/2+i , bitmapWidth, 1 ,
0 , bitmapHeight/2-i , bitmapWidth,1 ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
::StretchDIBits(pDC->GetSafeHdc(),0 , bitmapHeight/2-i , bitmapWidth, 1 ,
0 , bitmapHeight/2+i , bitmapWidth,1 ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(5);
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int i=0;i<=bitmapWidth/2;i++)
{
::StretchDIBits(pDC->GetSafeHdc(),0 , bitmapHeight/2+i , bitmapWidth, 1 ,
0 , bitmapHeight/2-i , bitmapWidth,1 ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
::StretchDIBits(pDC->GetSafeHdc(),0 , bitmapHeight/2-i , bitmapWidth, 1 ,
0 , bitmapHeight/2+i , bitmapWidth,1 ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(5);
}
}
}
Invalidate();
}
/*圖像上移特效顯示*/
void CDynSplitView2::OnShangyi()
{
// 刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//復(fù)制圖像數(shù)據(jù)
clearmem();
CDSplitDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//進行上移處理
if(!pDoc ->statedoc&&state2==1)
{
BYTE* pBitmapData = CDibNew1->GetData();
LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
int bitmapHeight = CDibNew1->GetHeight();
int bitmapWidth = CDibNew1->GetWidth();
if (CDibNew1->GetRGB()) // Has a color table
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int i=0;i<=bitmapHeight;i++)
{
for(int j=0;j<=bitmapWidth;j=j++)
{
::StretchDIBits(pDC->GetSafeHdc(), j , bitmapHeight-i , 1, i ,
j , bitmapHeight-i , 1, i ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
Sleep(5);
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int i=0;i<=bitmapHeight;i++)
{
for(int j=0;j<=bitmapWidth;j=j++)
{
::StretchDIBits(pDC->GetSafeHdc(), j , bitmapHeight-i , 1, i ,
j , bitmapHeight-i , 1, i ,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
Sleep(5);
}
}
}
Invalidate();
}
/*交叉飛入特效顯示*/
void CDynSplitView2::OnJiaoChaFeiRu()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//復(fù)制圖像數(shù)據(jù)
clearmem();
int nscanline=8;//設(shè)置顯示定位量
int k=0;
CDSplitDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(!pDoc ->statedoc&&state2==1)
{
BYTE* pBitmapData = CDibNew1->GetData();
LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
int bitmapHeight = CDibNew1->GetHeight();
int bitmapWidth = CDibNew1->GetWidth();
if (CDibNew1->GetRGB()) // 獲得調(diào)色板
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int i=0;i<=bitmapWidth;i++)
{
for(int j=0;j<=bitmapHeight/2;j=j+nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j , i+1,nscanline,
bitmapWidth-i, bitmapHeight-j-nscanline, i+1,nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=j+nscanline+bitmapHeight/2;
::StretchDIBits(pDC->GetSafeHdc(), bitmapWidth-i, k , i+1, nscanline,
0,bitmapHeight-k, i+1, nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
Sleep(5 );
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int i=0;i<=bitmapWidth;i++)
{
for(int j=0;j<=bitmapHeight/2;j=j+nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j , i+1,nscanline,
bitmapWidth-i, bitmapHeight-j-nscanline, i+1,nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=j+nscanline+bitmapHeight/2;
::StretchDIBits(pDC->GetSafeHdc(), bitmapWidth-i, k , i+1, nscanline,
0,bitmapHeight-k, i+1, nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
Sleep(5 );
}
}
}
Invalidate();
}
/*中間收縮特效顯示*/
void CDynSplitView2::OnZhongJianShouSuo()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//復(fù)制圖像數(shù)據(jù)
clearmem();
CDSplitDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(!pDoc ->statedoc&&state2==1)
{
BYTE* pBitmapData = CDibNew1->GetData();
LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
int bitmapHeight = CDibNew1->GetHeight();
int bitmapWidth = CDibNew1->GetWidth();
if (CDibNew1->GetRGB()) // Has a color table
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int j=0;j<bitmapHeight/2;j++)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j, bitmapWidth, 1,
0, bitmapHeight-j, bitmapWidth, 1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
::StretchDIBits(pDC->GetSafeHdc(),0, bitmapHeight-j, bitmapWidth, 1,
0, j, bitmapWidth, 1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(5);
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int j=0;j<bitmapHeight/2;j++)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j, bitmapWidth, 1,
0, bitmapHeight-j, bitmapWidth, 1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
::StretchDIBits(pDC->GetSafeHdc(),0, bitmapHeight-j, bitmapWidth, 1,
0, j, bitmapWidth, 1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
Sleep(5);
}
}
}
Invalidate();
}
void CDynSplitView2::Onpaint1()//對圖像進行反色變換
{
LPBYTE p_data; //原圖數(shù)據(jù)區(qū)指針
int wide,height; //原圖長、寬
p_data=CDibNew1->GetData (); //取得原圖的數(shù)據(jù)區(qū)指針
// if(m_pBitmapInfoHeader->biBitCount<9)
wide=CDibNew1->GetWidth ();
// else
//wide=this->GetDibWidthBytes();
height=CDibNew1->GetHeight ();
for(int i=0;i<height*wide;i++)
{
unsigned char temp;
temp=*(p_data+i);
*(p_data+i)=255- temp;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -