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

Вниз

Заполнение Canvas цветами от синего к красному   Найти похожие ветки 

 
guitarist ©   (2006-02-09 17:48) [0]

Вот решил сделать что-то типа визуализатора. Каждой точке canvas присвоил какое-то число. А теперь хочу вывести этот canvas таким образом, чтобы чем больше число, тем ближе к синему был цвет, а чем меньше тем ближе к красному. Подобрать формулу сам что-то пока не смог. Помогите, пожалуйста.
PS Только про зеленый забывать не следует, я думаю, если зеленый в RGB принять за константу работать не будет, хотя я может быть ошибаюсь.


 
antonn ©   (2006-02-09 18:56) [1]

глянь тут:
http://delphimaster.net/view/2-1137971881/


 
XProger ©   (2006-02-09 23:55) [2]

const
 W = 640;
 H = 480;
var
 i, c : Integer;
begin
 for i := 0 to H - 1 do
 begin
   c := i * 255 div H;
   Canvas.Pen.Color := RGB(c, 0, 255 - c);
   Canvas.MoveTo(0, i);
   Canvas.LineTo(W, i);
 end;
end;


 
guitarist ©   (2006-02-10 13:24) [3]

XProger.
То что предложили Вы -- это что-то вроде градиентной заливки, а нужно именно то, что я написал


 
antonn ©   (2006-02-10 13:27) [4]

guitarist ©   (10.02.06 13:24) [3]
а нужно именно то, что я написал

без пол-литра не понять, что вы хотите...


 
antonn ©   (2006-02-10 13:38) [5]

может так:
function GetColorMegduRandB(level,Max:integer):Tcolor;
var r,b:byte;
begin
r:=trunc(level*255/max);
b:=255-r;
result:=rgb(r,0,b);
end;


использование примерно такое:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
canvas.Brush.Color:=GetColorMegduRandB(TrackBar1.Position,TrackBar1.Max);
canvas.FillRect(rect(0,0,100,100));
end;


 
XProger ©   (2006-02-10 20:04) [6]

const
 MAX_NUM = 640;
...
procedure TForm1.NumOut(X, Y: Integer; Value: Integer);
var
 c : Integer;
begin
 c := Value * 255 div MAX_NUM;
 Canvas.Font.Color := RGB(c, 0, 255 - c);
 Canvas.TextOut(X, Y, IntToStr(Value));
end;

К сожалению, я - человек не пьющий, так что сути вопроса ясно понять не могу...


 
guitarist ©   (2006-02-10 21:41) [7]

Хм, а мне казалось понятно объяснил.

Вот посмотрите, пожалуйста, как сделать хочется.

http://avtogoal.narod.ru/123.JPG


 
XProger ©   (2006-02-10 23:40) [8]

Для человека с "незаконченным высшим" образованием - стыдно не решить подобную задачу. Всё необходимое для её решения мы дали, осталось только чуть-чуть подумать и решить задачу. Оставлю это удовольствие Вам...



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

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

Наверх




Память: 0.48 MB
Время: 0.046 c
2-1153208432
rebroff
2006-07-18 11:40
2006.08.06
Запрос с извлечением года из даты рождения (InterBase)


2-1152889248
Megabyte
2006-07-14 19:00
2006.08.06
Компонент ClientDataSet


15-1152537068
syte_ser78
2006-07-10 17:11
2006.08.06
маленький цифровик


15-1152685483
Gurion
2006-07-12 10:24
2006.08.06
глюки WinXP


10-1122560284
GekaNaz
2005-07-28 18:18
2006.08.06
НЕ могу вставить в Excel таблицу гиперссылку из Delphi