| 
| 
 | Вопрос # 638/ вопрос открыт / | 
 |  Дорогие эксперты!Как у рисунка можно изменить яркость,контрастность и насышенность? 
|  |   Вопрос задал: Аксион (статус: 4-ый класс)Вопрос отправлен: 18 июня 2007, 12:09
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Скачай себе базу знаний Delphi World. Там много интересного. Вот, к примеру, я там нашёл такую вещь (см. приложение): Приложение:Переключить в обычный режим { **** UBPFD *********** by delphibase.endimus.com ****          ***************************************************** } procedure Contrast(Bitmap: TBitmap; Value: Integer; Local: Boolean);   function BLimit(B: Integer): Byte;  begin    if B < 0 then      Result := 0    else if B > 255 then      Result := 255    else      Result := B;  end; var  Dest: pRGBTriple;  x, y, mr, mg, mb,    W, H, tr, tg, tb: Integer;  vd: Double; begin  if Value = 0 then    Exit;  W := Bitmap.Width - 1;  H := Bitmap.Height - 1;  if Local then  begin    mR := 128;    mG := 128;    mB := 128;  end  else  begin    tr := 0;    tg := 0;    tb := 0;    for y := 0 to H do    begin      Dest := Bitmap.ScanLine[y];      for x := 0 to W do      begin        with Dest^ do        begin          Inc(tb, rgbtBlue);          Inc(tg, rgbtGreen);          Inc(tr, rgbtRed);        end;        Inc(Dest);      end;    end;    mB := Trunc(tb / (W * H));    mG := Trunc(tg / (W * H));    mR := Trunc(tr / (W * H));  end;  if Value > 0 then    vd := 1 + (Value / 10)  else    vd := 1 - (Sqrt(-Value) / 10);  for y := 0 to H do  begin    Dest := Bitmap.ScanLine[y];    for x := 0 to W do    begin      with Dest^ do      begin        rgbtBlue := BLimit(mB + Trunc((rgbtBlue - mB) * vd));        rgbtGreen := BLimit(mG + Trunc((rgbtGreen - mG) * vd));        rgbtRed := BLimit(mR + Trunc((rgbtRed - mR) * vd));      end;      Inc(Dest);    end;  end;end; 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 19 июня 2007, 08:09
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |