BOOL StretchBlt( HDC hdcDest, int nXOriginDest , int nYOriginDest , int nWidthDest , int nHeightDest , HDC hdcSrc , int nXOriginSrc , int nYOriginSrc , int nWidthSrc , int nHeightSrc, DWORD dwRop );hdcDest はコピー先のデバイスコンテキストのハンドルを
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: GetClientRect(hwnd , &rect); hdc = BeginPaint(hwnd , &ps); DrawIcon(hdc , 0 , 0 , LoadIcon(NULL , IDI_WINLOGO)); SetStretchBltMode(hdc , COLORONCOLOR); StretchBlt( hdc , 0 , 0 , rect.right , rect.bottom , hdc , 0 , 0 , 32 , 32 , SRCCOPY ); EndPaint(hwnd , &ps); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: GetClientRect(hwnd , &rect); hdc = BeginPaint(hwnd , &ps); DrawIcon(hdc , 0 , 0 , LoadIcon(NULL , IDI_WINLOGO)); StretchBlt( hdc , rect.right , rect.bottom , -rect.right , -rect.bottom , hdc , 0 , 0 , 32 , 32 , SRCCOPY ); EndPaint(hwnd , &ps); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
BOOL StretchBlt( HDC hdcDest, int nXOriginDest , int nYOriginDest , int nWidthDest , int nHeightDest , HDC hdcSrc , int nXOriginSrc , int nYOriginSrc , int nWidthSrc , int nHeightSrc, DWORD dwRop );コピー元の長方形からコピー先の長方形にビットマップをコピーします
定数 | 解説 |
---|---|
BLACKONWHITE | 残す点の色と、取り除く点の色を、論理 AND 演算子で結合します ビットマップがモノクロビットマップの場合 白のピクセルが消され、黒のピクセルが残ります |
COLORONCOLOR | ピクセルを削除します 取り除く点の情報を保存することなく、削除します |
HALFTONE | コピー元のピクセルをコピー先のピクセルブロックに対応づけます コピー先のブロックの平均的な色が、コピー元のピクセルの色に近い色になります HALFTONEモードを設定した場合は、ブラシのずれを防ぐため SetBrushOrgEx() 関数を呼び出してください |
STRETCH_ANDSCANS | BLACKONWHITE と同じです |
STRETCH_DELETESCANS | COLORONCOLOR と同じです |
STRETCH_HALFTONE | HALFTONE と同じです |
STRETCH_ORSCANS | WHITEONBLACK と同じです |
WHITEONBLACK | 残す点の色と、取り除く点の色を、論理 OR 演算子で結合します ビットマップがモノクロビットマップの場合 黒のピクセルが消され、白のピクセルが残ります |