Маска

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Маска

Сообщение Urvin » 21.07.2003 (Пн) 20:38

При рисовании на picturebox можено наложить заклятие маски. При этом цвета немного сбиваются: Если цвет не содержит 255 в одном из каналов (не очень светлый (серый)) то возникает эффект 256 цветов. Может кто знает, как это выполняется в виде алгоритма?
Вопрос о времени не стоит.
Не так страшен русский танк, как его пьяный экипаж

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Re: Маска

Сообщение GoGosha » 22.07.2003 (Вт) 10:07

Urvin писал(а):При рисовании на picturebox можено наложить заклятие маски. При этом цвета немного сбиваются: Если цвет не содержит 255 в одном из каналов (не очень светлый (серый)) то возникает эффект 256 цветов. Может кто знает, как это выполняется в виде алгоритма?
Вопрос о времени не стоит.


Щас спою

Ты скажи, ты скажи
Чё те надо чё те надо...

Непонятно, тебе надо цвета типа (248,250,246) Преобразовывать в (255,255,255), тогда однозначо надо на Си плюс плюс писать Длл

Ну короче делаешь GetObject передаёшь си ссылку на переменную типа Bitmap там var=(BYTE*)bitmap->bmBits
а дальше перебираешь, думаю сработает

if (++var>245)
{
var=255;
}
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.07.2003 (Вт) 10:17

А причем тут C? Дело не в языке, а в алгоритме.
Чтобы уменьшить кол-во цветов, можно использовать такую функцию для каждой составляющей RGB:
C = (256/n) * Fix(C/(256/n)+0.5)
здесь n -- это число градаций в составляющей. Т.е. если тебе надо 32-битный цвет уменьшить до 8-битного, то n=64 и формула выглядит как C=4*Fix(C/4+0.5).

З.Ы. А если n всегда равно целым степеням двойки, то можно еще более упростить с помощью логических операций. Надо на каждую составляющую накладывать маску через AND; C = C And Not ((256-n)-1)
Lasciate ogni speranza, voi ch'entrate.

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 22.07.2003 (Вт) 14:20

Я имел в виду алгоритм маски! Никакого сведения мне не надо - мне оно как раз мешает!
Не так страшен русский танк, как его пьяный экипаж

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 22.07.2003 (Вт) 18:02

Что я могу сказать http://bbs.vbstreets.ru/download.php?id=148, только пофиксить немного, чтоб она для маски не точный цвет брала, а с допуском
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 22.07.2003 (Вт) 18:03

GoGosha писал(а):Что я могу сказать моя длл приходит на помощь http://bbs.vbstreets.ru/download.php?id=148, только пофиксить немного, чтоб она для маски не точный цвет брала, а с допуском
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 23.07.2003 (Ср) 11:54

:shock:
А она работает?
Не так страшен русский танк, как его пьяный экипаж


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 4

    TopList