MakeScreen で作成したグラフィックハンドルのピクセルの色を直接読み取る機能は無いので、
一度ソフトウエアイメージに転送して、ソフトウエアイメージの色を読み取る関数で色を取得する形になります
幅・高さ1ピクセルのソフトウエアイメージを使用して MakeScreen で作成したグラフィックハンドルの
1点の色を取得して画面に描画するサンプルを作成してみましたので、よろしければご覧ください
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int r, g, b, a ;
int x, add ;
int ScreenHandle ;
int SoftImageHandle ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// アルファチャンネル付きの描画対象にできるグラフィックハンドルを作成
ScreenHandle = MakeScreen( 640, 480, TRUE ) ;
// 1x1 サイズのアルファチャンネル付きソフトウエアイメージハンドルを作成
SoftImageHandle = MakeARGB8ColorSoftImage( 1, 1 ) ;
// グラフィックハンドルの中心に円を描画
SetDrawScreen( ScreenHandle ) ;
ClearDrawScreen() ;
DrawCircle( 320, 240, 64, GetColor( 255,255,0 ), TRUE ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 色のチェック座標を移動する処理に使用する変数を初期化
x = 0 ;
add = 8 ;
// 結果が見やすいように背景色を灰色にする
SetBackgroundColor( 128,128,128 ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// MakeScreen で作成したグラフィックハンドルを描画
DrawGraph( 0, 0, ScreenHandle, TRUE ) ;
// 色のチェック座標に四角形を描画
DrawBox( x - 3, 240 - 3, x + 3, 240 + 3, GetColor( 0,0,0 ), TRUE ) ;
// 色のチェック座標を移動する処理( 画面内を左右に移動する )
x += add ;
if( x < 0 || x > 640 )
{
add = -add ;
}
// 描画先を MakeScreen で作成したグラフィックハンドルに変更
SetDrawScreen( ScreenHandle ) ;
// 色のチェック座標の1ピクセルをソフトウエアイメージハンドルに転送
GetDrawScreenSoftImage( x, 240, x + 1, 240 + 1, SoftImageHandle ) ;
// 転送した1ピクセルの色( 赤, 緑, 青, アルファ( 透明度 ) の値 )を取得
GetPixelSoftImage( SoftImageHandle, 0, 0, &r, &g, &b, &a ) ;
// 描画先を裏画面に戻す
SetDrawScreen( DX_SCREEN_BACK ) ;
// 色の値を描画
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "R:%-3d G:%-3d B:%-3d A:%-3d", r, g, b, a ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
因みに MakeScreen で作成したグラフィックハンドルの内容を GetDrawScreenSoftImage を使用して
ソフトウエアイメージハンドルに転送する処理は負荷が高いので、もし1ピクセルではなく
もっと広い範囲の沢山のピクセルの色を取得されたい場合は MakeARGB8ColorSoftImage で作成する
ソフトウエアイメージを大きくして一度の GetDrawScreenSoftImage で必要な部分を転送するようにしてください