/*水平柵條特效顯示*/
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();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/133303.html
標籤:界面
