C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TBitmap, Grayscale
th1nG
  Отправлено: 19.03.2004, 19:47


Дежурный стрелочник

Группа: Участник
Сообщений: 31



такая тема: есть Graphics::TBitmap, надо ево сделать чорно-белым.
т.е. не 2х цвенным а именно серым..

пробовал переделывать в TJpeg делать серым, и обратно в TBitmap но это не выход.. как бы мне его сразу..??

--буду благодарен за простой пример типа Button1::OnClick()
а на выходе готовый серенький smile.gif

Отредактировано th1nG — 19/03/2004, 20:51
klen
Отправлено: 20.03.2004, 12:37


Машинист паровоза

Группа: Участник
Сообщений: 239



Как сделать чОрно белый не знаю, а вот в черно-белый с легкостью.

Правда кажется на этом же форуме, дня два назад ктото уже спрашивал и кто то отвечал тоже самое, поиском пользоваться нада батенька.

Graphics::TBitmap* bm = Image1 -> Picture -> Bitmap ;
for ( int X = 0 ; X < bm -> Width ; X ++ )
{
for ( int Y = 0 ; Y < bm -> Width ; Y ++ )
{
TColor Pixel = bm -> Canvas -> Pixels[X][Y] ;

int MonoColor = ((Pixel & (0xff)) +
(Pixel>> 8 & (0xff)) +
(Pixel>> 16 & (0xff))) / 3 ;

Pixel = MonoColor + (MonoColor << 8) + (MonoColor << 16) ;

bm -> Canvas -> Pixels[X][Y] = Pixel ;
}
}
th1nG
Отправлено: 20.03.2004, 19:10


Дежурный стрелочник

Группа: Участник
Сообщений: 31



да, спасибо за намек.. я просто недавно искал но не нашол, решыл запостить.

CODE
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int R, G, B;
  int I;    

  Graphics::TBitmap *pBitmap = Image1->Picture->Bitmap;

  int H = pBitmap->Height;
  int W = pBitmap->Width;

  for (int Y= 0; Y<H; Y++)
  {
      BYTE *lline = (BYTE *)pBitmap->ScanLine[Y];
      for (int X= 0; X<W; X++)
      {
          R= (lline)[X*3+2];
          G= (lline)[X*3+1];
          B= (lline)[X*3];

          I = (R+G+B)/3;

          lline[X*3]   =I;
          lline[X*3+1] =I;
          lline[X*3+2] =I;
     }
  }
  Image1->Repaint();
}


Отредактировано th1nG — 20/03/2004, 20:13

Вернуться в Вопросы программирования в C++Builder