サーフェスを作成します。サーフェスはWindows互換とオリジナルとがあります。HDCに転送するにはWindows互換である必要があります。 |
iSurface surface = CreateSurface( isize(100,100) , rgba_pixelformat );
iSurface surface = CreateSurface_win_rgb( isize(100,100) );
|
サーフェスのピクセルにアクセスします。サンプルでは全体を赤で塗りつぶしています。サーフェスはGetDestAvailableArea内にしか描画してはならない。 |
int pitchbyte; unsigned char* p = (unsigned char*)surface->GetDestPixelPtr( &pitchbyte );
irect av = surface->GetDestAvailableArea();
int x , y , pixelbyte = get_pixel_byte( surface->GetDestFormat() ); unsigned char* py = p + av.ymin * pitchbyte;
for( y = 0 ; y < av.Height() ; y++ )
{
unsigned char* px = py + av.xmin * pixelbyte;
for( x = 0 ; x < av.Width() ; x++ )
{
px[1] = 0xFF;
px[2] = 0x00;
px[3] = 0x00;
px += pixelbyte;
}
py += pitchbyte;
}
|
irect v , a;
HDC s_hdc = surface->GetSourceHDC( &v , &a );
::BitBlt( hdc , v.xmin + a.xmin , v.ymin + a.ymin , a.Width() , a.Height() , s_hdc , v.xmin + a.xmin , v.ymin + a.ymin , SRCCOPY );
|
|
|