![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно сделать рамку с ПЛАВНО ! меняющимся цветом [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Dmitry V. Averuanov © (2002-07-01 12:52:00)Нужно сделать рамку с ПЛАВНО ! меняющимся цветом
Лучше всего - от черного к ярко-красному. При этом важно, чтобы сие чудо не мерцало !
WhiteRat (2002-07-03 18:28:00) [1]Например:
procedure DrawVerticalGradient(ACanvas:TCanvas; Start,Finish:TColor; Rect:TRect);
var
i,j: Word;
rgb: array [0..2] of Real;
dif: array [0..2] of Integer;
begin
for i := 0 to 2 do
begin
rgb[i] := GetByte(Start,i);
dif[i] := GetByte(Finish,i)-Trunc(rgb[i]);
end;
for i := Rect.Top to Rect.Bottom do
begin
ACanvas.Pen.Color := 0;
for j := 0 to 2 do
ACanvas.Pen.Color := ACanvas.Pen.Color or (Round(rgb[j]) shl (8*j));
ACanvas.MoveTo(Rect.Left,i);
ACanvas.LineTo(Rect.Right,i);
for j := 0 to 2 do
rgb[j] := rgb[j]+dif[j]/(Rect.Bottom-Rect.Top);
end;
end;
Применять в любому Canvas. Для горизонтальной заливки, имхо, развернуть координаты не составит труда.
Dmitry V. Averuanov (2002-07-01 14:29:00) [2]- Маленький момент - собственно было-бы неплохо иметь ОБЪЕКТ в форме рамки с ПЛАВНО ! меняющимся цветом
Opuhshii (2002-07-01 13:20:00) [3]и опять и снова,. Wm_paint
Rgb(байт_красного,байт_зеленого,байт_синего):Tcolor;
BOOL BitBlt(
HDC hdcDest, // handle to destination device context
int nXDest, // x-destination rectangle"s upper-left corner
int nYDest, // y-destination rectangle"s upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
HDC hdcSrc, // handle to source device context
int nXSrc, // x-source rectangle"s upper-left corner
int nYSrc, // y-source rectangle"s upper-left corner
DWORD dwRop // raster operation code
);
Игорь Шевченко (2002-07-01 13:08:00) [4]изучение исходников TRxGradientCaption поможет...
> Лучше всего - от черного к ярко-красному
Программу учета грешников для слуг дьявола пишем ? :-)))