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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.01 c
2-1150533533
Exile
2006-06-17 12:38
2006.07.09
Запуск приложений из программы


8-1137625606
STK
2006-01-19 02:06
2006.07.09
Перехват Мультимедийных клавиш на клавиатуре


2-1150523990
brus
2006-06-17 09:59
2006.07.09
базы данных


2-1150962324
Mozgan
2006-06-22 11:45
2006.07.09
как записать компакт средствами windows XP на delphi?


2-1151063252
WebSqlNeederr
2006-06-23 15:47
2006.07.09
Как узнать путь где находится данная копия программы?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский