Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 16:37   #1
Masip
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 32
По умолчанию Рисование

Здравствуйте!Есть массив со значениями температуры Setka1. есть массив который хранить значения температуры Mas и цвет этой температуры.
Как нарисовать массив Setka1 на имейдже нужным цветом?

Код:
TGradient = record
    Temperatura:integer;
    Color:TColor;
  end;

    Setka1: array[0..180,0..60] of Extended;
    Mas:array[0..70] of TGradient;
Masip вне форума Ответить с цитированием
Старый 31.05.2010, 17:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На Image я бы не советовал.
Лучше PaintBox в цикле PaintBox.Canvas.Pixels[x,y]:=Массив[x,y];
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.05.2010, 17:35   #3
Masip
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
На Image я бы не советовал.
Лучше PaintBox в цикле PaintBox.Canvas.Pixels[x,y]:=Массив[x,y];
и как же мне тут цветом то управлять?
Masip вне форума Ответить с цитированием
Старый 31.05.2010, 18:37   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
На Image я бы не советовал.
Лучше PaintBox
Я бы не согласился. Зачем по 100 раз рисовать то, что можно нарисовать 1 раз.

По теме:
Код:
...Canvas.Pixels[x,y] := TempToColor(Setka1[x,y]);

...

function TempToColor (AValue: Integer): TColor;
var
  i: Integer;
begin
  Result := clWhite;
  for i := 0 to Length(Massiv) do begin
    if Massiv[i].Temp = AValue then begin
      Result := Massiv[i].Color;
    end;
  end;
end;
Sibedir вне форума Ответить с цитированием
Старый 31.05.2010, 18:48   #5
Masip
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 32
По умолчанию

А я бы с вами не согласился!)массив постоянно пересчитывается!вот что у меня получилось:

Код:
 m:=0;
    n:=0;
    for i:=Heihgt-6 to Heihgt-1 do
    begin
      for j:=Width div 2 - 25 to Width div 2 + 25 do
      begin
        for x:=0 to 69 do
          if Mas[x].Temperatura = Proc[m,n] then
          begin
            Form1.Image2.Canvas.Pixels[j,i]:= Mas[x].Color;
            Break;
          end;
        inc(n);
      end;
      inc(m);
      n:=0;
    end;
Masip вне форума Ответить с цитированием
Старый 31.05.2010, 18:51   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Что такое n и m?
И вообще, можете прокоментировать последовательность действий и заодно написать, что вообще надо-то.
Sibedir вне форума Ответить с цитированием
Старый 03.06.2010, 13:10   #7
Masip
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Что такое n и m?
И вообще, можете прокоментировать последовательность действий и заодно написать, что вообще надо-то.
m,n: integer; переменные для управления массивом Proc.
1)запускаем цикл который с помощью которого обойдем всю область рисования
2)проверяем выполняемость условия.в массиве Mas хранятся значения температур и присвоенный им цвет!
3)рисуем 1 пиксел данного цвета.
а вообще задача стояла в отрисовке массива Proc. в нем хранятся значения температур, которая постоянно пересчитывается!

Последний раз редактировалось Masip; 03.06.2010 в 13:16.
Masip вне форума Ответить с цитированием
Старый 03.06.2010, 17:55   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну вобщем-то понял. И как я понял, с поставленной задачей вы, впринципе, справились. У меня только 2 вопроса.

Вопрос 1-ый:
Зачем нужно хранить цвет температуры именно в массиве. Ведь цвет можно получать по формуле. Скажем, чем точка холоднее, тем ее цвет ближе к синему, а чем горячее, тем ближе к красному.

Вопрос 2-ой:
А насчет противостояния Image vs PaintBox, я просто хотел сказать, что это действительно спорный вопрос и не все так однозначно. Короче, не берите в голову. Думаю это не критично для вашей задачи.
Sibedir вне форума Ответить с цитированием
Старый 07.06.2010, 10:43   #9
Masip
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 32
По умолчанию

А можно поподробней на счет формулы для получения цвета???
Masip вне форума Ответить с цитированием
Старый 07.06.2010, 17:34   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
function TempToColor1 (AValue, AMin, AMax: Real): TColor;
var
  D: Real;
  r, b: Byte;
begin
  if AValue < AMin then
    Result := RGB (0, 0, 255)
  else
    if AValue > AMax then
      Result := RGB (255, 0, 0)
    else begin
      D := AMax - AMin;
      r := Round ((AValue - AMin) / D * 255);
      b := Round ((AMax - AValue) / D * 255);
      Result := RGB (r, 0, b);
    end;
end;

function TempToColor2 (AValue, AMin, AMax: Real): TColor;
var
  b: Byte;
begin
  if AValue < AMin then
    Result := RGB (0, 0, 255)
  else
    if AValue > AMax then
      Result := RGB (255, 0, 0)
    else begin
      if (AMax - AValue) > (AValue - AMin) then begin
        b := Round ((AValue - AMin) / (AMax - AMin) * 512);
        Result := RGB (b, b, 255);
      end
      else begin
        b := Round ((AMax - AValue) / (AMax - AMin) * 512);
        Result := RGB (255, b, b);
      end;
    end;
end;
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование Granus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 32 30.06.2009 23:23
рисование TaTT DoGG Общие вопросы .NET 3 14.05.2009 18:36
Рисование Granus Общие вопросы Delphi 2 24.12.2008 07:44
Рисование TriCERATOP Помощь студентам 5 28.11.2008 15:09
Рисование... HunterMan Win Api 10 30.04.2008 23:46