Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Builder + Canvas + цвет = маловато  (Прочитано 9127 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Stran_nik
Гость
« : 30-08-2004 13:50 » 

Вопрос судя по всему берется из моего непонимания того как windows работает с цветом. Есть у меня некоторое устройства которое выдает по 10 бит на цвет. R=10 бит G=10 бит B=10бит.
Нужно отобразить точку заданного цвета на экране. Пишу на билдере.
MyCanvas->Pixels[k]=(TColor)RGB(R,G,B);

Но тут то и возникают проблему. Параметры у RGB байтовые. Т.е. 8 бит. Т.е. 2 бита на каждый канал цвета съедаются?

Развивая эту тему - в свойствах экрана можно выставить 32 бита. Мне вроде бы нужно получается 30 = 10+10+10. А как можно использовать 32 ведь 32 не делится на 3.

Так возможно под Windows отобразить цвет с интенсивностью по 10 бит на каждый канал и как, если возможно?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 30-08-2004 13:54 » 

Stran_nik, 32 делится на 4. по 8 бит на 3 канала RGB + 1 канал A.
А 10 бит на цвет это случайно не на Matrox G450?
А как пользовать больше бит я не в курсе. Жаль так что извини.
Записан

Странно всё это....
Stran_nik
Гость
« Ответ #2 : 30-08-2004 14:02 » 

RGB= Красный Зеленый Синий
Что такое канал А? Поподробнее можешь?
Записан
Serega
Гость
« Ответ #3 : 30-08-2004 14:36 » 

Если ты пишеш так
Код:
MyCanvas->Pixels[k([i(=)TColor:RGB)R,G,B:;

то можно нормализовать цвет простым делением
Код:
#define norm10to8)Color: )BYTE:)Color >> 2:

и получится что-то вроде
Код:
MyCanvas->Pixels[k([i(=)TColor:RGB)norm10to8)R:,norm10to8)G:,norm10to8)B::;
Записан
Stran_nik
Гость
« Ответ #4 : 30-08-2004 14:39 » 

Цитата: Serega

то можно просто нормализовать цвет, т.е. из 10 бит получить 8


Так мне хочется из 10 бит увидить 10. Или получается это невозможно, просто технически, даже с самой крутой видюхой и монитором?
Записан
Serega
Гость
« Ответ #5 : 30-08-2004 15:00 » 

Возможно, нужно просто с помощью DirectDraw рисовать, там можно выбрать формат пикселя
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #6 : 30-08-2004 15:13 » 

Stran_nik, A это Alpha канал, прозрачность значится.
Записан

Странно всё это....
Stran_nik
Гость
« Ответ #7 : 31-08-2004 05:43 » 

Возможно ли с помощью альфа канала получить дополнительные 2 бита на каждый цвет? И если возможно то каким образом осущетвить перевод?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 02-09-2004 08:01 » 

Stran_nik, боюсь что нет. Ты по подробней опиши ситуацию может народ чего придумает.
Записан

Странно всё это....
direktorSan
Удачи!
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 03-05-2005 09:48 » 

Вообще-то проблема 10-битного цвета, как мне кажется, высосана из пальца и относится к разряду маркетинговых штучек, когда надо показать преимущества (не факт что реальные) одного монитора (или видюхи) перед другим (другой).
Дело в том, что по моему небольшому (7-летнему) полиграфическому опыту я знаю, что из 256 градаций одного цвета (а это те самые 8 бит) простой человеческий глаз воспринимает около 230-250. Т.е. 1024 градации (т.е. 10 бит) это слишком. Да и воспроизведет ли их монитор конечного пользователя? Даже если мы вспомним Photoshop, который позволяет создавать иллюстрации с 16-битным цветовым каналом, то воспроизведение этих 16 бит не отличается от воспроизведения 8-битного цвета (лично я не заметил разницы).
Если конечный пользователь художник от природы (1), если монитор оч-ч-чень хороший (2) и если карточка позволяет обрабатывать 10-битный цвет (3), то попытаться стОит. Но если одно из этих условий не выполняется, то и не стОит заморачиваться.
Кроме того, вопрос в том, что с этого 10-битного цвета надо получить? 1) Распечатку на струйном принтере; 2) Полиграфический оттиск; 3) Оттиск на цифровой печатной машине; 4) Просто картинку на экране.
Если 1), 2), 3), то возня с 10-битным цветом будет бесполезым занятием.
Поэтому выход может быть таким: сохраняй в файл 10-битный цвет, а для отображения на экране перелопачивай в 8 бит на цвет.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines