2

フルスクリーンゲームを実行していて、中央のピクセルの色を見つけようとしています。ただし、私が使用しているコードは、ウィンドウ化されたアプリケーション/ゲームなどでのみ機能するようです。これは私のコードです:

public static Color GetPixelColor(int x, int y) 
{
    IntPtr hdc = GetDC(IntPtr.Zero);
    uint pixel = GetPixel(hdc, x, y);
    ReleaseDC(IntPtr.Zero, hdc);
    Color color = Color.FromArgb((int)(pixel & 0x000000FF),
            (int)(pixel & 0x0000FF00) >> 8,
            (int)(pixel & 0x00FF0000) >> 16);

    return color;
} 

私はこのようなミドルスクリーンピクセルを取得しています:

int ScreenWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
int ScreenHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;

では、どうすればこのコードをフルスクリーンゲームと互換性を持たせることができますか?A = 255, R = 0, G = 0, B = 0中央の画面のピクセルが赤であると100%肯定的ですが、ARGB値はです。

4

1 に答える 1

3

内容:

//using System.Windows.Forms;
public static Color GetPixelColor(int x, int y) 
{
    Bitmap snapshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);

    using(Graphics gph = Graphics.FromImage(snapshot))  
    {
        gph.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    }

    return snapshot.GetPixel(x, y);
} 

それで:

Color middleScreenPixelColor = GetPixelColor(Screen.PrimaryScreen.Bounds.Width/2, Screen.PrimaryScreen.Bounds.Height/2);
于 2012-06-23T19:56:47.017 に答える