2

Windows XP、C プログラミング言語で

画面のピクセル (つまり、現在表示されている 1024*768) を高速に読み取りたい

フレームバッファが解決策だと思います。

それで

私は試した

#include "SDL.h"
#include <stdio.h>
#include <time.h>

SDL_Surface *screen;

int main(int argc, char *argv[])
{
  if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) 
  {
    fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
    exit(1);
  }
  screen = SDL_GetVideoSurface();
  if ( screen == NULL ) 
  {
    exit(1);
  }

  return 0;
}

しかし、画面はNULLのようです

初心者の質問でごめんなさい

しかし、誰かがフレームバッファにアクセスしてピクセルを読み取る方法を教えてもらえますか?

どんな方法でも大歓迎です

4

1 に答える 1

5

SDL では、デスクトップのピクセルを読み取れません。これらの機能は移植性がないため抽象化されています (たとえば、コンソールや組み込みデバイスでデスクトップ ピクセルを読み取るとはどういう意味でしょうか?)。その結果、Windows API を直接使用する必要があります。Windows を使用してからしばらく経ちましたが、少なくとも 2 年前までは、プロセスは次のように機能していました。

  1. デスクトップ デバイス コンテキストを取得します。

  2. そこからピクセルを読み取ります。

たとえば、コードは次のようになります (大まかに言えば、私はもう Windows を使用していないので、ここでは 100% ではありません)。

 HDC desktopDC = CreateDCAsNull("DISPLAY", NULL, NULL, NULL);
 int pixel=GetPixel(desktopDC, x, y);
于 2011-06-26T10:03:15.680 に答える