📄 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);
//复制图像数据
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();
}
void CDynSplitView2::Onpaint1()//对图像进行反色变换
{
LPBYTE p_data; //原图数据区指针
int wide,height; //原图长、宽
p_data=CDibNew1->GetData (); //取得原图的数据区指针
// 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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -