Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 09:33   #1
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию Осветление участков

Такой метод не подходит:
Код:
for i := 400 to 700 do
 for j := 200 to 400 do
   buf.Canvas.Pixels[i,j] := buf.Canvas.Pixels[i,j] + 10;
Тем более, что он не правильно работает . И тем более, что этот способ очень медленный. Подскажите, как рациональней освещать участки изображения?

Последний раз редактировалось Манжосов Денис :); 18.06.2009 в 09:51.
Манжосов Денис :) вне форума Ответить с цитированием
Старый 18.06.2009, 15:28   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Так ScanLine'ом...

Код:
Var Bitmap: TBitmap;

Type
 TRGB=Record Blue,Green,Red: Byte End;
 ARGB = Array[0..0] Of TRGB;
 PARGB=^ARGB;

...

Procedure TForm1.FormCreate(Sender: TObject);
Begin
Bitmap:=TBitmap.Create;
Bitmap.PixelFormat:=pf24bit;
Bitmap.LoadFromFile('F:\<Название файла>.bmp'); // для примера
Image1.Canvas.Draw(0, 0, Bitmap);
End;

Procedure TForm1.SpeedButton1Click(Sender: TObject);
Var i, j: Integer; Line: PARGB;
Begin
For j:=200 To 400 Do
      Begin
      Line:=Bitmap.ScanLine[j];
      For i:=400 To 700 Do
            Begin
            Line[i].Red:=Line[i].Red+10;
            Line[i].Green:=Line[i].Green+10;
            Line[i].Blue:=Line[i].Blue+10;
            // можно ещё добавить проверку "если больше 255, то приравнять к 255"...
            End;
      End;
Image1.Canvas.Draw(0, 0, Bitmap);
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 18.06.2009 в 23:07. Причина: Апечатка был... :(
DomiNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прозрачность отдельных участков формы Романнн Общие вопросы Delphi 38 30.01.2010 20:04
Затемнение и осветление цветов. proglamer Мультимедиа в Delphi 1 02.12.2008 16:09
Защита участков кода BlackOmen Общие вопросы Delphi 5 12.03.2008 08:59
как рисовать на канве битмапы учитывая прозрачность участков битмапа? Alar Общие вопросы Delphi 0 29.10.2006 23:06