{
//直接操作缓存
char *buffer;
int x, y;
const GBVisualButton * pVisualButton =0;
int layer_width;
int row_width_in_byte;
gdi_layer_struct* next_layer;
U32 src_byte_per_pixel;
gdi_handle CurLayer;
pVisualButton = bt;
gdi_layer_get_active ( &CurLayer );
gdi_layer_get_buffer_ptr ( (U8 **)&buffer );
next_layer = (gdi_layer_struct*)CurLayer;
src_byte_per_pixel = next_layer->bits_per_pixel / 8;
row_width_in_byte = bt->comprect.w * src_byte_per_pixel;
for ( y = GET_BUTTON_RECT_Y(pLayout, bt); y < GET_BUTTON_RECT_Y(pLayout, bt)+bt->comprect.h - 1; y++ )
{
char * pRow = &buffer[(y * next_layer->width + GET_BUTTON_RECT_X(pLayout, bt))* src_byte_per_pixel];
char * pRowEnd = pRow + row_width_in_byte;
for(; pRow < pRowEnd; pRow++)
{
*pRow = ~(*pRow);
// if (pLayout == &s_HWLayout)
// *pRow = ~(*pRow);
}
// for ( x = GET_BUTTON_RECT_X(pLayout, bt); x < GET_BUTTON_RECT_X(pLayout, bt)+bt->comprect.w - 1; x++ )
// {
// buffer[(y * next_layer->width + x)* src_byte_per_pixel] = ~buffer[(y * next_layer->width + x)* src_byte_per_pixel];
// buffer[(y * next_layer->width + x)* src_byte_per_pixel + 1] = ~buffer[(y * next_layer->width + x)* src_byte_per_pixel + 1];
// } InvertActiveLayer();
}
}