Форум: "Начинающим";
Текущий архив: 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.009 c