Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TColor - ? TColor - ? 
:(
    Опции темы
AVA
  Дата 9.6.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.6.2004
Где: г. Калуга

Репутация: нет
Всего: нет



TColor -> 32бита -> 4байта. 3-и из них это RGB цвета, а для чего 4-й?
И ещё вопрос, предположим у меня палитра 256 цветов, то каким образом пределенный цвет из этой палитры впишется в эти 32 бита notify.gif

Это сообщение отредактировал(а) AVA - 9.6.2004, 15:25
PM MAIL ICQ   Вверх
Kesh
Дата 10.6.2004, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 4
Всего: 54



Ну, например, для задания alpha-канала... Т.е. определить прозрачность цвета в тех же [0..255]


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Cheba
Дата 10.6.2004, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



В Win32 значение этого "незадействованого" байта определяет это обычный RGB или системный цвет, напимер цвет кнопок или рабочего стола.
PM MAIL ICQ   Вверх
AVA
Дата 10.6.2004, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.6.2004
Где: г. Калуга

Репутация: нет
Всего: нет



Ну а как будет выглядеть значение из 8битовой палитры (256 цветов) в этих 32-х битах? bored.gif
PM MAIL ICQ   Вверх
Cheba
Дата 11.6.2004, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Тут есть два варианта.

Первый: Индексированый цвет.
В этом случае где-то должна быть таблица соответствий, содержащая цвет в RGB и индексы. По индексу можно определить достать нормальный TColor.

Второй: Сжатый цвет.
В этом случае обычно выделяют 3 бита на красный, 2 - на зеленый и 3 - на синий. Могут быть и иные вариации. В этом случае тоже можно определить значение TColor повозившись немного. Ничего сложного нет. Например для сочетания 3-2-3 значение 179 ($B3, в бинарном виде 10110011) значением TColor будет $009B7E5D.
PM MAIL ICQ   Вверх
AVA
Дата 11.6.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.6.2004
Где: г. Калуга

Репутация: нет
Всего: нет



Цитата(Cheba @ 11.6.2004, 11:47)
Второй: Сжатый цвет.
В этом случае обычно выделяют 3 бита на красный, 2 - на зеленый и 3 - на синий. Могут быть и иные вариации.

а как можно узнать какой вариант использовался в кодировке (3-2-3 или ещё какой)?
PM MAIL ICQ   Вверх
Cheba
Дата 11.6.2004, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Зависит от того где это используется.
Ты бы по-конкретней задачу описал...
PM MAIL ICQ   Вверх
AVA
Дата 11.6.2004, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.6.2004
Где: г. Калуга

Репутация: нет
Всего: нет



Вкратце: есть последовательность байт, которые надо вывести на экран ввиде пикселей разного цвета. Этот экран находится на удаленном рабочем столе и палитра там 256 цветов. Затем у меня, посредством удаленного рабочего стола какой-нить программы захватить эту картинку и преобразовать опять в последовательность байт (но палитра у меня уже труколорная).
Вот и получается проблемма закодировать байт в цвет так, чтобы потом система не округлило это значение до своего ближайшего и т.п.
PM MAIL ICQ   Вверх
Cheba
Дата 11.6.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Тут все просто (наверное). Поскольку на удаленном рабочем столе виндовская палитра, ты можешь без опасений (наверное) просто убавить глубину цвета битмепа до восьми бит - Винды автоматом преобразуют в ту же палитру что и на удаленной машине.

Внимание!
Если на удаленной машине работает не обычное приложение, а какая-то игрушка с DirectX или OpenGL, то тут уже хуже. Они могут задавать свою палитру и, наверное, распределение битов.
PM MAIL ICQ   Вверх
AVA
Дата 11.6.2004, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.6.2004
Где: г. Калуга

Репутация: нет
Всего: нет



На удаленной машине будет находиться мое приложение которое будет кодировать..., Чего-то я такое слышал что при политре 256, около 20 цветов занято системмой, что-то мне подсказывает что это ещё один трабл.
PM MAIL ICQ   Вверх
x77
Дата 11.6.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



не понял, что за три бита?

старшый байт всегда определяет, откуда будут браться значения последующих трёх байтов, ни о каком сжатии здесь речи не идёт.

00 - значения из системной палитры
01 - значения из реализованной палитры
02 - значения из логической палитры контекста устройства (device context), к которому мы обращаемся.

по сути, цвет никогда напрямую не задаётся, значения трёх младших составляющих байтов - это всегда просто индекс в соответствующей палитре, задаваемой старшим байтом. то, что мы считаем "чистым цветом" - это просто цвет из системной палитры.

про цвета, "занятые системой" тоже не понял. есть стандартные 24 константы, которые можно увидеть в свойствах экрана, на вкладке "Оформление", открыв комбу "Элемент". Это просто константы. которым благополучно можно присвоить любые собственные цвета. Они переопределены в Graphics.pas, но на программировании GUI виндовые цвета никоим образом не сказываются. можно написать MyColor := clBtnFace, можно написать MyColor := clSilver, при стандартных настройках вы получите одинаковый цвет. При нестандартных - разные. вот и всё. Какие тут могут быть траблы?

Про преобразование палитры. я опять нифига не понял. зачем её преобразовывать?? вы надеетесь, что 8-битная палитра, преобразованная в 24 бита, вдруг сама себя раскрасит 24 битами вместо восьми? вы получите ту же самую картинку. так нафига её преобразовывать? работайте с 8-битной картинкой и всё, какие здесь проблемы?

если я правильно понимаю, картинка будет дёргаться по сети. надо думать, что не в бмп. скорее всего, jpg. вот вам и ответ на все вопросы. преобразовывайте, меняйте глубину цвета (смысла в этом я лично не вижу, но мало ли), для всего этого есть стандартные функции, от управления качеством сжатия (соотв. и размером картинки, что немаловажно), до глубины цвета и метода отображения на экране.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cheba
Дата 11.6.2004, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



x77, задачей AVA является передача данных таким вот извратным методом. На удаленной машине его прога семафорит некоторым количеством цветов. Тоесть байтовый массив преобразуется в битмеп, где каждому значению байта соответствует определенный цвет. Он будет через Remot Desctop захватывать изображение в 8-ми битной палитре и по нему нужно восстановить последовательность байтов. Поэтому ему и нужно преобразование.

AVA, предоставь всю возню с палитрами Виндам. 20 цветов он никуда не занимает, тут x77 прав. Винды всегда преобразуют цвет по методу Nearest Color.
PM MAIL ICQ   Вверх
BraM's
Дата 1.9.2004, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 2.7.2004

Репутация: нет
Всего: 1



Народ! Сорри, что поднимаю старую тему, но у меня возникла проблема:
Какие биты отвечают за какой цвет в случае 16bit палитры?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0732 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.