Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Градиент на BMP   Найти похожие ветки 

 
Luc   (2002-11-10 23:23) [0]

Народ спасите плз. Надо написать прогу которая грузит BMP 24 bit
в IMAGE и При выделении прямоугольником области делает в ентой области градиент. Проблема с градиентом! Он должен быть на asm но хотябы на Delphi найти!


 
LongIsland ©   (2002-11-11 15:26) [1]

Быть такого не может

procedure TForm1.GradientRect (FromRGB, ToRGB: TColor;Canvas:tcanvas);
var
RGBFrom : array[0..2] of Byte; { from RGB values }
RGBDiff : array[0..2] of integer; { difference of from/to RGB values }
ColorBand : TRect; { color band rectangular coordinates }
I : Integer; { color band index }
R : Byte; { a color band"s R value }
G : Byte; { a color band"s G value }
B : Byte; { a color band"s B value }
begin
{ extract from RGB values}
RGBFrom[0] := GetRValue (ColorToRGB (FromRGB));
RGBFrom[1] := GetGValue (ColorToRGB (FromRGB));
RGBFrom[2] := GetBValue (ColorToRGB (FromRGB));
{ calculate difference of from and to RGB values}
RGBDiff[0] := GetRValue (ColorToRGB (ToRGB)) - RGBFrom[0];
RGBDiff[1] := GetGValue (ColorToRGB (ToRGB)) - RGBFrom[1];
RGBDiff[2] := GetBValue (ColorToRGB (ToRGB)) - RGBFrom[2];

{ set pen sytle and mode}
Canvas.Pen.Style := psSolid;
Canvas.Pen.Mode := pmCopy;

{ set color band"s left and right coordinates}
ColorBand.Left := 0;
ColorBand.Right:= canvas.ClipRect.Right-Canvas.ClipRect.Left;

for I := 0 to $ff do
begin
{ calculate color band"s top and bottom coordinates}
ColorBand.Top := MulDiv (I , canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100);
ColorBand.Bottom := MulDiv (I + 1,canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100);
{ calculate color band color}
R := RGBFrom[0] + MulDiv (I, RGBDiff[0], $ff);
G := RGBFrom[1] + MulDiv (I, RGBDiff[1], $ff);
B := RGBFrom[2] + MulDiv (I, RGBDiff[2], $ff);
{ select brush and paint color band}
Canvas.Brush.Color := RGB (R, G, B);
Canvas.FillRect (ColorBand);
end;
end;

Взято из какого-то ФАКа, можно сделать по аналогии


 
Luc   (2002-11-11 19:55) [2]

Большое спасиба!



Страницы: 1 вся ветка

Текущий архив: 2003.02.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
14-76105
MBo
2003-02-06 09:49
2003.02.24
Некоторые известные в мире Дельфи люди ;)


4-76231
pkm1
2003-01-11 20:30
2003.02.24
Папка


3-75813
sav00
2003-02-05 21:33
2003.02.24
Как проиндексировать таблицу?


1-75974
Kolius
2003-02-12 12:44
2003.02.24
Поиск в базе данных


3-75827
ДенМат
2003-02-06 12:48
2003.02.24
Сумирование поля типа TIME