📄 dynsplitview2.cpp
字号:
::DeleteObject(hPalette);
delete point;
}
else
{
for(int mi=0;mi<ltilenum;mi++)
{
point[mi].x=mx;
point[mi].y=my;
mx=mx+12;
if(mx>bitmapWidth)
{mx=0;my=my+12;}
}
for(int i=0;i<=1;i++)
for(mi=ltilenum-1;mi>0;mi--)
{
int n=(int)((double)ltilenum*rand()/RAND_MAX);
mx=point[n].x;my=point[n].y;
::StretchDIBits(pDC->GetSafeHdc(),mx, my, 12,12,
mx,bitmapHeight-my-12, 12,12,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
point[n].x=point[mi].x;
point[n].y=point[mi].y;
Sleep(1);
}
delete point;
}
}
Invalidate();
}
/*水平栅条特效显示*/
void CDynSplitView2::OnShuipingshantiao()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//复制图像数据
clearmem();
int nscanline=8; //设定显示定位量
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()) // 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+2*nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j , i+1, nscanline,
bitmapWidth-i, bitmapHeight-j, i+1, nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=j+nscanline ;
::StretchDIBits(pDC->GetSafeHdc(), bitmapWidth-i, k , i+1, nscanline,
0,bitmapHeight-k, i+1, nscanline,
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+2*nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),0, j , i+1, nscanline,
bitmapWidth-i, bitmapHeight-j, i+1, nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=j+nscanline ;
::StretchDIBits(pDC->GetSafeHdc(), bitmapWidth-i, k , i+1, nscanline,
0,bitmapHeight-k, i+1, nscanline,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
}
}
}
Invalidate();
}
/*垂直栅条特效显示*/
void CDynSplitView2::OnChuizhishantiao()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//复制图像数据
clearmem();
int nscanline=8; //设置图像显示定位量
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()) // Has a color table
{
CPalette * hPalette=CreateBitmapPalette(CDibNew1);
CPalette * hOldPalette =
pDC->SelectPalette(hPalette, true);
pDC->RealizePalette();
for(int j=0;j<=bitmapHeight;j++)
{
for(int i=0;i<=bitmapWidth;i=i+2*nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),i, 0 , nscanline, j+1,
i, bitmapHeight-j, nscanline, j+1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=i+nscanline;
::StretchDIBits(pDC->GetSafeHdc(), k, bitmapHeight-j , nscanline, j+1,
k,0, nscanline, j+1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
}
pDC->SelectPalette(hOldPalette, true);
::DeleteObject(hPalette);
}
else
{
for(int j=0;j<=bitmapHeight;j++)
{
for(int i=0;i<=bitmapWidth;i=i+2*nscanline)
{
::StretchDIBits(pDC->GetSafeHdc(),i, 0 , nscanline, j+1,
i, bitmapHeight-j, nscanline, j+1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
k=i+nscanline;
::StretchDIBits(pDC->GetSafeHdc(), k, bitmapHeight-j , nscanline, j+1,
k,0, nscanline, j+1,
pBitmapData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
}
}
}
Invalidate();
}
/*渐显特效显示*/
void CDynSplitView2::OnJianxian()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//复制图像数据
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();
LPBYTE temp,temp1,temp2;
temp=new BYTE[CDibNew1->GetHeight()*CDibNew1->GetWidth()];
memset (temp,0,CDibNew1->GetHeight()*CDibNew1->GetWidth());
for(int n=0;n<=256;n++)
{
temp1=temp;
temp2=pBitmapData;
for(int j = 0; j < bitmapHeight; j++)
{
for(int i = 0; i < bitmapWidth; i ++)
{
*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);
//复制图像数据
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();
}
/*中间扩张特效显示*/
void CDynSplitView2::OnZhongJianKuoZhang()
{
//刷新屏幕
CDC *pDC=GetDC();
CRect rect(0,0,1000,1000);
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rect,&brush);
//复制图像数据
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/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);
//复制图像数据
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);
//复制图像数据
clearmem();
int nscanline=8;//设置显示定位量
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()) // 获得调色板
{
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);
//复制图像数据
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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -