几个老外关于DX屏幕像素颜色判断的热烈讨论
, B3 q8 O3 _. E7 Yhttp://www.xtremedotnettalk.com/showthread.php?p=466159
0 h7 P) ~9 d$ a! c
; S/ ~9 v8 w I+ P9 t$ `3 JSurface s = dxDevice.GetBackBuffer(0, 0, BackBufferType.Mono);
8 d: }. A+ i# {& Auint[,] data = (uint[,])s.LockRectangle(new Rectangle(0, 0, 32, 32), LockFlags.ReadOnly);
# U* Q* @$ q; L. n& ~& Z1 [7 b. c$ B% | \
for (int n = 0; n < 100; i++)
* { ~: T. V1 m# H% G) M7 m{
- a: V# ~3 |4 b$ @ for (int j = 0; j < 100; j++) J* `( J1 p; `( Q; u% C3 |
{
4 Z3 ]( Y7 t: T$ ~ L7 j data[n, j] = (uint)Color.White.ToArgb();
! y7 ]5 r" z- s7 I) J z; e* ? }3 ^3 f- v1 p0 D! ^" v5 ?
}
1 |) o1 ^: K& v% j& e9 z8 p' {% K/ w) m
----------------------------------------------------
8 ?0 l4 c/ j: Z2 S2 L6 WSurface s = dxDevice.GetBackBuffer(0, 0, BackBufferType.Mono);
$ |; r/ C5 `4 _9 U$ \Stream stream = SurfaceLoader.SaveToStream(ImageFileFormat.Bmp, s, new Rectangle(int locationX, int locationY, 1, 1));
* ~3 G" e* K* g) E. HBitmap bmp = new Bitmap(stream);
- D. X: Q( z: b# astream.Dispose();
2 F/ o% u3 `' W" Z' Z t
$ A* b/ a$ S4 eColor c = bmp.GetPixel(0, 0);0 R* A6 a& O0 g4 {: ^7 O
if (c.R == 255 && c.G == 0 && c.B == 0)
- j' |! m) f% j+ Y c Z{2 D5 |0 ~9 {* a' O, Q9 u' Z- ]' R" R
// do something. W6 {; L( N l
break;
$ n4 T6 U0 N' n5 M4 x, |$ E- `' U} |