読者です 読者をやめる 読者になる 読者になる

MFC プログラムで画像を描いてイメージリストに追加するサンプル

MFC
//	日の丸を作成
//	メモリ上にデバイス独立ビットマップを(DIB)作成する。
		ZeroMemory(&bmp,sizeof(bmp));
		bmp.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
		bmp.bmiHeader.biBitCount=32;
		bmp.bmiHeader.biPlanes=1;
		bmp.bmiHeader.biWidth=IMAGE_WIDTH;
		bmp.bmiHeader.biHeight=-IMAGE_HIGHT;
		hbitmap=CreateDIBSection(NULL,&bmp,DIB_RGB_COLORS,NULL , NULL,0);
//	画面と互換性のあるデバイスコンテキストを作成
		img_hdc=CreateCompatibleDC(hdc);
		SelectObject(img_hdc , hbitmap);
		ReleaseDC(hWnd,hdc);

		HPEN hPen,hOldPen;
		hPen=CreatePen(PS_SOLID, 2, RGB(255,255,255) );
		hOldPen=(HPEN__ *)SelectObject(img_hdc, hPen);

		hBrush =CreateSolidBrush(RGB(255,255,255));
		hOldBrush = (HBRUSH__ *)SelectObject(img_hdc, hBrush);

		Rectangle(img_hdc , 0,0,IMAGE_WIDTH-1,IMAGE_HIGHT-1);

		hPen=CreatePen(PS_SOLID, 2, RGB(255,0,0) );
		SelectObject(img_hdc, hPen);

		hBrush =CreateSolidBrush(RGB(255,0,0));
		SelectObject(img_hdc, hBrush);

		Ellipse(img_hdc,IMAGE_WIDTH/2-16,IMAGE_HIGHT/2-16,IMAGE_WIDTH/2+16,IMAGE_HIGHT/2+16);
		SelectObject(img_hdc, hOldBrush);
		DeleteObject(hBrush);
		SelectObject(img_hdc, hOldPen);
		DeleteObject(hPen);
// イメージリストに登録する前にデバイスコンテキストを削除しなければならない
//	削除しないと真っ黒な画像が表示されるだけである。
		DeleteDC(img_hdc);
		ImageList_AddMasked(hImg ,hbitmap,RGB(255,255,255));
		DeleteObject(hbitmap);

ネタ元