几个老外关于DX屏幕像素颜色判断的热烈讨论
3 R- |, m; |- V W" d3 Ohttp://www.xtremedotnettalk.com/showthread.php?p=4661593 C2 [% y* p( l# I, H7 ^
$ G: W/ s/ S( Y5 h+ |
Surface s = dxDevice.GetBackBuffer(0, 0, BackBufferType.Mono);0 z1 H' o+ E! G G
uint[,] data = (uint[,])s.LockRectangle(new Rectangle(0, 0, 32, 32), LockFlags.ReadOnly);
( w( u. P. x2 P. B5 X& u% ], M1 g4 `6 ?! y9 E; y' r
for (int n = 0; n < 100; i++)
4 E' J1 ?9 ] V) r4 X6 M3 a$ S{
! O% L2 A% c7 \4 a8 A for (int j = 0; j < 100; j++)
/ I0 i) y2 S% y( t {
1 v7 d _# t) [ data[n, j] = (uint)Color.White.ToArgb();1 [0 @% X7 d; R8 m" H
}
0 `5 a1 x) w8 |1 I( }) ]}
/ F4 o% B1 [+ V) M) w t" @6 i! g/ _4 h7 Y p
----------------------------------------------------, m+ [' l: I( t) F- b, g; U
Surface s = dxDevice.GetBackBuffer(0, 0, BackBufferType.Mono);
8 z4 j4 I+ d. x" ?( BStream stream = SurfaceLoader.SaveToStream(ImageFileFormat.Bmp, s, new Rectangle(int locationX, int locationY, 1, 1));
( s+ l! r4 m3 u- N' {Bitmap bmp = new Bitmap(stream);+ l% x3 A, n K0 y
stream.Dispose();
$ c. s$ n" n% R5 l1 [$ w j% t+ g9 k0 r; A" d: J. }
Color c = bmp.GetPixel(0, 0);
- }( D6 y- D- z0 |if (c.R == 255 && c.G == 0 && c.B == 0)
* S; I! u% A, n. P( P2 O{- g( O/ X% N3 D
// do something7 w. s/ M7 f1 Z1 b( G% o! C/ H4 G i; m
break;. d' \ }2 J- Q( o" ~6 H9 z) E
} |