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

Вниз

Цвета   Найти похожие ветки 

 
Duk_ ©   (2006-06-22 20:25) [0]

Здравсвуйте! У меня такой вопрос: как можно отобразить (например на форме) все цвета и оттенки которые может предоставить система??? Ну тоесть закрасить плавно что-то последовательно от начала до конца с плавным последовательным переходом цвета.


 
vrem   (2006-06-22 21:23) [1]

Из 3-х состовляющих цвета используются две(т.к. когда состовляющие цвета равны, то цвет не цветной, а белый или там серый - не цветное отбрасываем)
RGB -
посмотреть в спектре переходы от какого цвета к какому, так и делать -
например красный краснозелёный-зелёный- синезелёный - синий красно- синий
R    G B
255 0 0
255 1 0
255 2 0
...
255 254 0
255 255 0 - краснозелёный
254 255 0 - начало уменьшаться количество красного
...
0 255 0 - зелёный
0 255 1 - начинает синеть :)
..
0 255 255

Отношение оставшихся двух цветов 0..1 - "оттенок"
множитель что бы получилось 1 255, а не  0,0039 - "цветность"
В приведённом примере цветность =255, оттенок меняется дискретно, что бы вместиться в 256 различных уровней.


 
Gero ©   (2006-06-23 02:11) [2]

> как можно отобразить (например на форме) все цвета и оттенки
> которые может предоставить система

Что значит «может предоставить система»?


 
Amoeba ©   (2006-06-23 10:16) [3]


> все цвета и оттенки которые может предоставить система

Места ни на какой форме для этого просто не хватит, если в системе используется режим TrueColor.


 
Gero ©   (2006-06-23 10:33) [4]

> [3] Amoeba ©   (23.06.06 10:16)

Вовсе не факт, при надлежащем разрешении вполне может хватить.


 
Amoeba ©   (2006-06-23 10:38) [5]


> Gero ©   (23.06.06 10:33) [4]
> > [3] Amoeba ©   (23.06.06 10:16)
>
> Вовсе не факт, при надлежащем разрешении вполне может хватить.
>

Это и ежику понятно. Только вот, даже если  разрешения хватит, то каждый цвет займет по 1-4 пиксела.


 
Desdechado ©   (2006-06-23 10:55) [6]

TColorDialog


 
Duk_ ©   (2006-06-23 12:49) [7]


> Что значит «может предоставить система»

Ну если вы на 286 сможете добится труколор я вас поздравляю


 
Gero ©   (2006-06-23 13:14) [8]

> [5] Amoeba ©   (23.06.06 10:38)

И что? Никто не говорил, что нужно больше.

> [7] Duk_ ©   (23.06.06 12:49)

Поздравления приняты.


 
Duk_ ©   (2006-06-23 16:58) [9]

Хорошо перефразирую вопрос. Как на компоненту TImage (наприер) можно вывести палитру цветов, как это делает Свойства: Экран -> Параметры?


 
StriderMan ©   (2006-06-23 18:42) [10]

снять скриншот

> Свойства: Экран -> Параметры?

и запихать в Image


 
vrem   (2006-06-23 19:24) [11]

Вот вот, неблагодарный автор, смотри ответ
StriderMan ©   (23.06.06 18:42) [10]!


 
Gero ©   (2006-06-24 00:38) [12]

> Как на компоненту TImage (наприер) можно вывести палитру
> цветов, как это делает Свойства: Экран -> Параметры?

TImage.Picture присвоить нужную картинку.


 
Gero ©   (2006-06-24 00:38) [13]

Да и вобще вопрос [9] не имеет ничего общего с вопросом [0].


 
Duk_ ©   (2006-06-24 12:47) [14]


> StriderMan ©   (23.06.06 18:42) [10]
>
> снять скриншот
>
> > Свойства: Экран -> Параметры?
>
> и запихать в Image

Я смотрю, все такие умные на этом сайте. Единственное что умеете -издеваться. И то не честно, так как послать вас в одно место не дают модераторы. Вы что думаете сли вы такие модные здесь с тем кто задает вопросы то вы от этого становитесь круче? Да 30% людей которые задают здесь вопросы могут запихнуть вас за пояс в своем умении програмировать, а други 70% могут получить ответы delphikingdom.ru. И не будет ни каких тупых ответов типа "дла вирусописателей ответы не даем". Мне нужно было скрыть процесс в ХР. Здесь я просмотрел страниц 5 флуда. На делфикингдом сразу пришел ответ. Так что делайте выводы дорогие господа.


 
Belorus ©   (2006-06-24 14:58) [15]

Хехе. Купи пару-тройку книженций, и не шуми. Тем более что ты задал глупый и некорректный вопрос. А люди может весёлые. А тут ты такой серьёзный.


 
Duk_ ©   (2006-06-24 17:13) [16]

Что же в моем вопросе глупого? То что мне нужно получить сцвета и их оттенки последователтно.
> А люди может весёлые. А тут ты такой серьёзный.
А по поводу людей я уже сказал. А я вовсе не серьезный. Просто меня бесит такое отношение. Если мой вопрос показался кому-то глупым - пускай, но суть все поняли.


 
vrem   (2006-06-24 17:17) [17]

Утик, и чего в моём ответе [1] тебя не устроило и взбесило?


 
Zeqfreed ©   (2006-06-24 17:55) [18]

type
 TRGB = record
  B, G, R : Byte;
 end;

 PARGB = ^ARGB;
 ARGB = array [0..1] of TRGB;

. . .

function HSLToRGB(H : Integer; S, L : Single) : TRGB;
type
 TRGB = record
  R, G, B : Single;
 end;
var
 c2, sat, ctmp : TRGB;
begin
 while (H < 0) do H := H + 360;
 while (H > 360) do H := H - 360;

 if (H < 120) then begin
  sat.R := (120 - H) / 60.0;
  sat.G := H / 60.0;
  sat.B := 0;
 end else if (H < 240) then begin
  sat.R := 0;
  sat.G := (240 - H) / 60.0;
  sat.B := (H - 120) / 60.0;
 end else begin
  sat.R := (H - 240) / 60.0;
  sat.G := 0;
  sat.B := (360 - H) / 60.0;
 end;

 sat.R := Min(sat.r, 1);
 sat.G := Min(sat.g, 1);
 sat.B := Min(sat.b, 1);

 ctmp.R := 2 * S * sat.R + (1 - S);
 ctmp.G := 2 * S * sat.G + (1 - S);
 ctmp.B := 2 * S * sat.B + (1 - S);

 if (L < 0.5) then begin
  c2.R := L * ctmp.R;
  c2.G := L * ctmp.G;
  c2.B := L * ctmp.B;
 end else begin
  c2.R := (1 - L) * ctmp.R + 2 * L - 1;
  c2.G := (1 - L) * ctmp.G + 2 * L - 1;
  c2.B := (1 - L) * ctmp.B + 2 * L - 1;
 end;

Result.R := Trunc(c2.R * 255);
Result.G := Trunc(c2.G * 255);
Result.B := Trunc(c2.B * 255);
end;

procedure DrawColorSquare(Dest : TBitmap; Width, Height : Integer; Lightness : Single);
var
 i, j : Integer;
 s, l : Single;
 p : PARGB;
begin
 l := Lightness;

 for j := 0 to Height - 1 do begin
  s := ((255 - j) / Height);

  p := Dest.ScanLine[j];
  for i := 0 to Width - 1 do begin
   p[i] := HSLToRGB(Trunc((i * 360) / Width), s, l);
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 tmp : TBitmap;
begin
 tmp := TBitmap.Create();
 try
  tmp.PixelFormat := pf24bit;
  tmp.Width := Image1.Width;
  tmp.Height := Image1.Height;
  DrawColorSquare(tmp, tmp.Width, tmp.Height, 0.5);
  Image1.Canvas.Draw(0, 0, tmp);
 finally
  tmp.Free;
 end;
end;


Попробуй такой код ;)


 
Zeqfreed ©   (2006-06-24 18:13) [19]

Я там немножко недосмотрел, сейчас исправил. Правильный код такой:

procedure DrawColorSquare(Dest : TBitmap; Width, Height : Integer; Lightness : Single);
var
 i, j : Integer;
 s, l : Single;
 p : PARGB;
begin
 l := Lightness;

 for j := 0 to Height - 1 do begin
  s := (Height-j) / Height;

  p := Dest.ScanLine[j];
  for i := 0 to Width - 1 do begin
   p[i] := HSLToRGB(Trunc((i*360) / Width), s, l);
  end;
 end;
end;


 
Duk_ ©   (2006-06-25 00:33) [20]


> vrem   (24.06.06 17:17) [17]
>
> Утик, и чего в моём ответе [1] тебя не устроило и взбесило?
>
>

Кстати тебе огромное спасибо, а также Zeqfreed ©   (24.06.06 18:13) [19]. Вы мне сильно помогли. И вообще все что я писал к Вам не относится. Еще раз спасибо.

Хотя вот это меня обидело:
triderMan ©   (23.06.06 18:42) [10]

снять скриншот

> Свойства: Экран -> Параметры?

и запихать в Image
<Цитата>
vrem   (23.06.06 19:24) [11]

Вот вот, неблагодарный автор, смотри ответ
StriderMan ©   (23.06.06 18:42) [10]!



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

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

Наверх




Память: 0.52 MB
Время: 0.035 c
1-1147442827
Igor Stepanov
2006-05-12 18:07
2006.07.09
Написание Button.Caption в две строки


10-1121666630
Mefodiy
2005-07-18 10:03
2006.07.09
NumberFormat не срабатывает


1-1148851141
ViK
2006-05-29 01:19
2006.07.09
Много оконное приложение


1-1148686286
wsih
2006-05-27 03:31
2006.07.09
Сортировака TreeView


2-1150971343
Blari
2006-06-22 14:15
2006.07.09
Детский вопрос