Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 18:27   #1
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию Негатив

Пока готовлю тему для совместного мозгои... истерзания, дам такой вопрос: если есть цвет в формате шестнадцетиричного RRGGBB, как получить негатив? Например, дано (Делфи) c:TColor, c:=#567890.
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Старый 27.02.2009, 18:43   #2
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

вроде нужно вычесть цвет из FFFFFF в 16 системе
XeN0N вне форума Ответить с цитированием
Старый 27.02.2009, 19:17   #3
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Надо контролировать, чтобы значение для каждого цвета в отдельности не стало $FF. Т.е. любой цвет может принимать значение из диапазона $00..$FE. Вычитать надо из $FEFEFE.
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Старый 27.02.2009, 19:34   #4
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

разве FF не может? 100% интенсивность или както так
например белый
FFFFFF
черный = FFFFFF - FFFFFF(белый) = 000000
XeN0N вне форума Ответить с цитированием
Старый 27.02.2009, 20:20   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от roach1967 Посмотреть сообщение
Надо контролировать, чтобы значение для каждого цвета в отдельности не стало $FF. Т.е. любой цвет может принимать значение из диапазона $00..$FE. Вычитать надо из $FEFEFE.
Это что-то новое...
По-вашему, цвет со значением $0000FF - это не чисто красный?
По-вашему, чисто красный - это $0000FЕ?
mihali4 вне форума Ответить с цитированием
Старый 28.02.2009, 02:08   #6
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Мне уже приходилось сталкиваться с обработкой изображения и передачу его куда-то ещё. Минимальное и максимальное значения цветов брались те, которые предлагала сама система. Вот там как раз и стояли значения $FE. Сейчас уже не могу вспомнить, в каких случаях происходит такое ограничение. Если установлено разрешение в 16 бит, то такое ограничение понятно. Есть ещё 24 и 32 бита.
На данный момент у меня качество цветопередачи 32 бита. Цвета можно задавать в полном диапазоне. Т.е. не стоит и запариваться насчёт таких значений цветов.
Данное ограничение, по моемому, было связано как-то с заданием цвета какого-то компонента для передачи прозрачного цвета (сквозь него виден рабочий стол), а не с картинкой.
А в итоге изысканий получилось, что удобнее и быстрее получать негатив операцией NOT. Она просто инвертирует каждый бит, т.е. результат аналогичный вычитанию из $FFFFFF.
Но вот как получить негатив в 32-х битной картинке?
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Старый 28.02.2009, 02:33   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Может так?
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var i, j: Integer;
Begin
For i:=0 To Image1.Width Do
    For j:=0 To Image1.Height Do
        Image1.Canvas.Pixels[i,j]:=clwhite-Image1.Canvas.Pixels[i,j];
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 28.02.2009, 02:57   #8
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Я попробовал такой код. Работает вроде быстрее.
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц