2012-02-23 5 views

答えて

0

私は画面の現在のイメージをピクセルデータとして取得する方法はわかりませんが、そうするとプリミティブ配列(おそらくunsigned char)になります。配列は複数の異なるフォーマットのどれでもかまいませんが、最も一般的なのは4バイトのRGBAです。これは各コンポーネントが1バイトの情報を取得することを意味します。ピクセルデータは、通常、ブック内のテキストのように、左から右、上から下にレイアウトされます。

ピクセルが位置(x、y)にあるとします。ピクセルデータのインデックスを取得するためには、次の手順を実行する必要があります:

int width;  //set to the width of the image 
int height;  //set to the height of the image 
int index; 

//number of bytes per pixel * number of pixels per row * number of rows 
index = 4 * width * y;  //get the index of the start of the correct row 

//number of bytes per pixel * number of pixels to go across 
index += 4 * x;   //get the index of the correct column in the row 

// pixels[index] = red byte 
// pixels[index + 1] = green byte 
// pixels[index + 2] = blue byte 
// pixels[index + 3] = alpha byte 
// pixels[index - (any number)] = previous pixels 
// pixels[index + (any number more than 3)] = future pixels 

今、あなたはただ与えられた画素のためのRGBA値を格納し、特定画素の画素データにアクセスする方法を知っていることプログラムの開始時に、プログラムが実行されるときに、時折、現在の色を保存された色と比較する(タイマーを使用する)。彼らが違うときは、何かをする(音楽を演奏する)。

希望すると便利です。

関連する問題