Hi, I have a big problem. I want to do a program which will get a part of the screen of a program. After that It will show this small rectangle in Image component in BCB. But the problem is, it has to refresh it at least 10 times in one second. For now I succeeded in doing a code that gets a screen but it is too slow. It is refreshing in 2,5-3 seconds(It is copying all pixels separately by GetPixel() function to Image):/ This code below is within a loop. It should show the window but it shows only black screen. When I'm using analogical code but with loading a bitmap from file everthing works fine.
1.
2.Analogical code with loading from file:Code:HDC WinDC; HDC CopyDC; HBITMAP hBitmap; RECT rt; HWND Wnd=FindWindow(NULL,"WINDOW"); if(Wnd==0) {MessageBox(0,"didnt found the window!",0,0);} GetWindowRect (Wnd, &rt); WinDC = GetDC (Wnd); CopyDC = CreateCompatibleDC (global_hdc); std::cout<<rt.right - rt.left<<std::endl; std::cout<<rt.bottom - rt.top<<std::endl; hBitmap = CreateCompatibleBitmap (WinDC, 800, //width 600);//height SelectObject (CopyDC, hBitmap); BitBlt (global_hdc, //destination 0,0, 800, //width 600, //height CopyDC, //source 0, 0, SRCCOPY); DeleteObject((HBITMAP)hBitmap); DeleteDC(CopyDC);
EDIT:Code:HBITMAP image; BITMAP bm; HDC hdcMem; //load the bitmap image image = (HBITMAP)LoadImage(0,"asteroid.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //read the bitmap's properties GetObject(image, sizeof(BITMAP), &bm); //create a device context for the bitmap hdcMem = CreateCompatibleDC(global_hdc); SelectObject(hdcMem, image); //draw the bitmap to the window (bit block transfer) BitBlt( global_hdc, //destination device context 0, 0, //x,y location on destination bm.bmWidth, bm.bmHeight, //width,height of source bitmap hdcMem, //source bitmap device context 0, 0, //start x,y on source bitmap SRCCOPY); //blit method //delete the device context and bitmap DeleteDC(hdcMem); DeleteObject((HBITMAP)image);
I want to get a part of window in a game and want to show this rectangle on my form. I've chosen Image component(BCB) for that but I'm not sure that it is enough fast way. I've got known that the problem is that I don't load the bitmap(of the black screen). So I have to load about 10 or more pictures per second from DC of this game window, am I right? But I don't have any idea how to load it from window and put in the image component(I think Image component don't have HDC so I can't use BitBlt function?).
I would be also grateful for orienting me how to analize pixels as fastly as possible. I mean I want analize about 50000 pixels four times in one second(checking if their color is red).



LinkBack URL
About LinkBacks


