今は、GetPixel()を使用してデスクトップから約64ピクセルを取得し、その色を取得しています。私はGetPixel()については遅いが、それはいくつかのピクセルの問題はないと思ったが、私はルーチンを実行するたびに1.5秒かかると思った。いくつかの研究をした後、私はbitbltが私が探しているもののように思えると結論づけました。私がしたいことは、(すべてのウィンドウを含む)デスクトップの定義された領域をつかんで、与えられたオフセットでピクセルの色をつかむことです。ここで私が今やっているものです:BitBltを使用してデスクトップピクセルの色を取得する
for (y=0;y<=7;y++) {
for (x=0;x<=7;x++) {
//gameScreen is a struct containing the offset from the top left of the monitor
//to the area of the screen I need
grid[y][x]=getColor(gameScreen.x+((x*40)+20),gameScreen.y+((y*40)+20));
}
}
int getColor(int x, int y) {
//create new point at given coordinates
POINT point;
point.x=x;
point.y=y;
//convert to logical points
DPtoLP(desktopDC,&point,2);
//get pixel color
//desktopDC is an HDC from GetWindowDC(GetDesktopWindow())
int pixel=GetPixel(desktopDC,point.x,point.y);
return pixel;
}
私はチュートリアルやドキュメントのまともな量を見つけましたが、彼らは私のためのあまりに行っていない、WindowsのAPIに非常に新しいものました。ありがとう!あなたは、おそらく希望している
このコードはBitBltを呼び出すようには見えません。あなたの質問が何であるかは明確ではありません。このコードに問題がありますか、まだ書いていないコードがありますか? –
さて、私はBitBltを使用していませんが、したいと思います。私はドキュメントを見てきましたが、それを得ることはできません。 GetPixel()ルーチンをBitBltに置き換えたいのですが! –
その後、いくつかのコードを書いて試してみてください。次に、あなたのコードをここに掲示して、あなたが何をしたのか、なぜあなたが立ち往生しているのかを説明します。 –