Добрый день! подскажите пожалуйста, как реализовать следующее:
я создаю битмап следующим образом:
| Код | #include "stdafx.h"
#include <vfw.h> #include <windows.h> #include <tchar.h>
int _tmain(int argc, _TCHAR* argv[]) { printf("starting\n"); HDC hdc = CreateCompatibleDC(NULL);
BITMAPINFO bmi; BITMAPINFOHEADER bmheader; /*bmheader.biSize=14 + 40 + 324*256*4; bmheader.biWidth=324; bmheader.biHeight=256; bmheader.biPlanes=1; bmheader.biSizeImage=324*256; bmheader.biBitCount=32; bmheader.biCompression=0; bmheader.biXPelsPerMeter=0; bmheader.biYPelsPerMeter=0;*/ //ZeroMemory(&bmi, sizeof(BITMAPINFO)); bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biBitCount = 32; bmi.bmiHeader.biHeight = 256; bmi.bmiHeader.biWidth = 324; bmi.bmiHeader.biPlanes =1; bmi.bmiHeader.biXPelsPerMeter=0; bmi.bmiHeader.biYPelsPerMeter=0;
HDC dc = CreateCompatibleDC(NULL); char Frame[(324*256)*4];
for (int mass=0; mass<324*256; mass++ ){ Frame[mass]=160; }
for (int height=0; height < 256; height++){ for (int index=height*324; index < (height+1)*324; index++ ){ Frame[index]=(char)height; } } HBITMAP cross =(HBITMAP) CreateBitmap(324,256,1,32,Frame); printf("cross red\n");
SelectObject(hdc, cross); int i_count=0; printf("starting loop\n");
while (1) {
HDC hdc_x = GetDC(HWND_DESKTOP); SetStretchBltMode(hdc, HALFTONE); int ret=BitBlt(hdc_x,300,300,64,64,hdc,0,0,SRCCOPY); printf(" %d\n", ret); ReleaseDC(HWND_DESKTOP,hdc_x); printf(" looping : %d %d \n", i_count, ret); Sleep(500); i_count++; }
return 0; }
|
как этот полученный битмап, | Код | HBITMAP cross =(HBITMAP) CreateBitmap(324,256,1,32,Frame);
|
записать в поток директ шоу, а потом отобразить на экране?
Этот массив байт будет обновляться по таймеру, и получится что то вроде видео. Как это организовать? может кто то делал что то подобное? |