精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 急!在線等~~C++怎么把圖象縮小或放大一倍?

    急!在線等~~C++怎么把圖象縮小或放大一倍?
    HDIB ChangeDIBSize(HDIB hDIB, int nWidth, int nHeight)
    { LPBITMAPINFO lpbmi = NULL;
    LPBYTE lpSourceBits, lpTargetBits, lpResult;
    HDChDC = NULL, hSourceDC, hTargetDC;
    HBITMAPhSourceBitmap, hTargetBitmap, hOldTargetBitmap, hOldSourceBitmap;
    DWORDdwSourceBitsSize, dwTargetBitsSize, dwTargetHeaderSize;
    HDIB hNewDIB;
    DWORD dwSize;
    WaitCursorBegin()
    if (! hDIB)
    {WaitCursorEnd();
    return NULL;}
    LPBITMAPINFO lpSrcDIB = (LPBITMAPINFO)GlobalLock(hDIB);
    if (! lpSrcDIB)
    {WaitCursorEnd();
    return NULL;}
    dwTargetHeaderSize = sizeof( BITMAPINFOHEADER ) + PaletteSize(lpSrcDIB);
    lpbmi = (LPBITMAPINFO)malloc( dwTargetHeaderSize );
    memcpy(lpbmi, lpSrcDIB, dwTargetHeaderSize);
    lpbmi->bmiHeader.biWidth = nWidth;
    lpbmi->bmiHeader.biHeight = nHeight;
    hDC = GetDC( NULL );
    hTargetBitmap = CreateDIBSection( hDC, lpbmi, DIB_RGB_COLORS, (VOID **)&lpTargetBits, NULL, 0 );
    hSourceBitmap = CreateDIBSection( hDC, lpSrcDIB, DIB_RGB_COLORS, (VOID **)&lpSourceBits, NULL, 0 );
    hSourceDC = CreateCompatibleDC( hDC );
    hTargetDC = CreateCompatibleDC( hDC );
    dwSourceBitsSize = lpSrcDIB->bmiHeader.biHeight * BytesPerLine((LPBYTE)&(lpSrcDIB->bmiHeader));
    dwTargetBitsSize = lpbmi->bmiHeader.biHeight * BytesPerLine((LPBYTE)&(lpbmi->bmiHeader));
    memcpy( lpSourceBits, FindDIBBits((LPBYTE)lpSrcDIB), dwSourceBitsSize );
    lpbmi->bmiHeader.biSizeImage = dwTargetBitsSize;
    hOldSourceBitmap = (HBITMAP)SelectObject( hSourceDC, hSourceBitmap );
    hOldTargetBitmap = (HBITMAP)SelectObject( hTargetDC, hTargetBitmap );
    SetStretchBltMode( hTargetDC, COLORONCOLOR );
    StretchBlt( hTargetDC, 0, 0, lpbmi->bmiHeader.biWidth, lpbmi->bmiHeader.biHeight, hSourceDC, 0, 0, lpSrcDIB->bmiHeader.biWidth, lpSrcDIB->bmiHeader.biHeight, SRCCOPY );
    SelectObject( hSourceDC, hOldSourceBitmap );
    SelectObject( hTargetDC, hOldTargetBitmap );
    DeleteDC( hSourceDC );
    DeleteDC( hTargetDC );
    ReleaseDC( NULL, hDC );
    GdiFlush();
    dwSize = dwTargetHeaderSize + dwTargetBitsSize;
    hNewDIB = GlobalAlloc(GHND, dwSize);
    lpResult = (LPBYTE)GlobalLock(hNewDIB);//malloc( dwTargetHeaderSize + dwTargetBitsSize );
    memcpy( lpResult, lpbmi, dwTargetHeaderSize );
    memcpy( FindDIBBits( (LPBYTE)lpResult ), lpTargetBits, dwTargetBitsSize );
    DeleteObject( hTargetBitmap );
    DeleteObject( hSourceBitmap );
    free( lpbmi );
    GlobalUnlock(hDIB);
    GlobalUnlock(hNewDIB);
    WaitCursorEnd();
    return hNewDIB;}
    以上是圖象縮放函數(shù)的源代碼,我現(xiàn)在需要直接把圖象縮小到原來的一半和放大一倍.請問需要改動哪里,具體怎么改?用自己的代碼也可以~謝謝啦
    其他人氣:179 ℃時間:2020-05-10 20:36:20
    優(yōu)質(zhì)解答
    HDIB是原始圖像的句柄, nWidth和nHeight就是縮小或放大后的大小.直接調(diào)用就行.
    WaitCursorBegin()
    WaitCursorEnd();兩句刪掉;
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點(diǎn),以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機(jī)版