Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.01.2013, 17:46
WVBR WVBR вне форума
Прохожий
 
Регистрация: 16.01.2013
Сообщения: 7
Репутация: 10
По умолчанию нанести на изображение полупрозрачный градиент

есть задача нанести на изображение полупрозрачный градиент с переходом от белого цвета с прозрачностью 50% до синего цвета с прозрачностью 5%

вот пример исходника процедуры, которая на image1 наносит градиент при попиксильном анализе, все бы ничего, но получается нанести только один цвет и без указания процентов, как добавить синий цвет и задать процент?


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
procedure TForm1.save1Click(Sender: TObject);
    procedure ImageGradient(bitmap: tbitmap; p:boolean);
type
TRGB = record
r: byte;
g: byte;
b: byte;
end;
ARGB = array[0..1]of TRGB;
PARGB = ^ARGB;
var
pb, ps: PARGB;
x,y,b:integer;
 
function Min(a, b: Longint): Longint;
  begin
 if a > b then Result := b else  Result := a;
end;
 
function convertByte(BaseColor: TColor; i:integer): TColor;
  begin
 if p=true then b:=Y else b:=x;
//RGB(A1-(A1-B1)/h*i, A2-(A2-B2)/h*i, A3-(A3-B3)/h*i);
Result := RGB(Min(GetRValue(ColorToRGB(BaseColor)) + round((255)*b/bitmap.Height), 255),
Min(GetGValue(ColorToRGB(BaseColor))+ round(255*b/bitmap.Height), 255),
Min(GetBValue(ColorToRGB(BaseColor))+ round(255*b/bitmap.Height), 255));
 end;
  begin
bitmap.Assign(bitmap);
bitmap.PixelFormat:=pf24bit;
 
 for y:=0 to bitmap.Height-1 do
  begin
pb:=bitmap.scanline[y];
ps:=bitmap.scanline[y];
 for x:=0 to bitmap.Width-1 do
  begin
ps[x].r:=convertByte(pb[x].r,x);
ps[x].g:=convertByte(pb[x].g,x);
ps[x].b:=convertByte(pb[x].b,x)
end;
 
end;
end;
begin
     ImageGradient(Image1.Picture.Bitmap,false);
end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025