掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
デバイスコンテキストを取得し、ビットマップをしてつかうには? (ID:64378)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
現在、スクリーンキャプチャした画像をビットマップとして利用たいと思い、下記のようなソースプログラムを作ったのですが、イメージとしてビットマップを読み出す事ができません。 DWORD dwSize,dwFSize,dwWidth,dwHeight,dwLength; TCHAR strFile[MAX_PATH]=""; HANDLE hFile; LPBITMAPFILEHEADER lpHead; LPBYTE lpBuf,lpPixel; HDC hdc,hdcMem; HBITMAP hBMP,hOld; OPENFILENAME ofn={0}; dwWidth=1280; dwHeight=1024; // バッファの1ラインの長さを計算 if((dwWidth*3)%4==0)dwLength=dwWidth*3; else dwLength=dwWidth*3+(4-(dwWidth*3)%4); // 書き込み用バッファのサイズ計算 dwFSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwLength*dwHeight; // バッファ確保とポインタ設定 lpBuf=(LPBYTE)GlobalAlloc(GPTR,dwFSize); lpHead=(LPBITMAPFILEHEADER)lpBuf; lpInfo=(LPBITMAPINFOHEADER)(lpBuf+sizeof(BITMAPFILEHEADER)); lpPixel=lpBuf+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); //BMPファイルのヘッダの作成 lpHead->bfType='M'*256+'B'; lpHead->bfSize=dwFSize; lpHead->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); lpInfo->biSize=sizeof(BITMAPINFOHEADER); lpInfo->biWidth=dwWidth; lpInfo->biHeight=dwHeight; lpInfo->biPlanes=1; lpInfo->biBitCount=24; // ウインドウのデバイスコンテキスト取得 hdc = CreateDC(TEXT("DISPLAY") , NULL , NULL , NULL); //ウインドウのデバイスコンテキストと互換のBITMAPを作成 hBMP=CreateCompatibleBitmap(hdc,dwWidth,dwHeight); //クライアント領域を取得 hdcMem=CreateCompatibleDC(hdc); hOld=(HBITMAP)SelectObject(hdcMem,hBMP); BitBlt(hdcMem,0,0,dwWidth,dwHeight,hdc,0,0,SRCCOPY); SelectObject(hdcMem,hOld); GetDIBits(hdc,hBMP,0,dwHeight,lpPixel,(LPBITMAPINFO)lpInfo,DIB_RGB_COLORS); //後処理 DeleteDC(hdc); DeleteObject(hBMP); DeleteObject(hdcMem); この処理をさせた後、デバイスコンテキストから取得したビットマップをファイルから読み出しの変わりに利用するにはどうしたらいいのでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.