Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Заполнение 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 вся ветка

Форум: "Media";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
6-1143034305
Kacnep
2006-03-22 16:31
2006.08.06
Виснет при TidServerSocket.Active:=false; Инди 10


3-1149162724
Dust
2006-06-01 15:52
2006.08.06
опятьBlob, перекачка инфы с помощью стримов


15-1152146509
PATRIOT
2006-07-06 04:41
2006.08.06
Проблема с пересылкой файла


15-1151944074
sdf13
2006-07-03 20:27
2006.08.06
можно ли писать на Delphi под Pocket PC?


15-1152699816
QuickFinder
2006-07-12 14:23
2006.08.06
PostScript





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский