Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.120.16] |
|
Страницы: (16) « Первая ... 6 7 [8] 9 10 ... 15 16 все ( Перейти к последнему сообщению ) |
Сообщ.
#106
,
|
|
|
Цитата Der_Meister @ Там интересно так... 1 пиксел весит 10 байт. 4 пиксела весят 10 байт. 5 пикселов - уже 18 вроде. Самое главное, BGI "портит" всю предоставленную ему память. То есть обнуляешь массив, а он вместо 1 пиксела еще 3 левых пишет и т.д. Да ничего интересного. Первые два слова - ширина/высота. Вид "кодирования" не указан нигде. Потом - данные для 4-х битовых плоскостей. См. руководство по программированию EGA. (это что касается 16-тицветных режимов). Для 8-битных и выше - проще. |
Сообщ.
#107
,
|
|
|
Да все я понимаю. Просто ты поробуй. На самом деле не все так просто.
|
Сообщ.
#108
,
|
|
|
Цитата Der_Meister @ Просто ты поробуй. На самом деле не все так просто. Дык пробовал. У меня даже редактор когда-то давно под это дело был. Вернее, конвертор из БМП. Кстати, а как ты вообще себе это представляешь? Большая часть задачек великомудрыми преподами задается в 16 цветах. Установка такого режима под виндой... Гм... Проблематична. Если без извратов. Так смысл вообще с этим разбираться? |
Сообщ.
#109
,
|
|
|
Цитата barazuk @ Кстати, а как ты вообще себе это представляешь? Большая часть задачек великомудрыми преподами задается в 16 цветах. Установка такого режима под виндой... Гм... Проблематична. Если без извратов. Так смысл вообще с этим разбираться? Так я и не устанавливаю режим. Просто в массив по указателю должен писать то же самое, что и BGI |
Сообщ.
#110
,
|
|
|
Т.е. ты хочешь из 256- или более цветного режима брать картинку, уменьшать в ней количество цветов до 16, отслеживать изменения палитры?...
|
Сообщ.
#111
,
|
|
|
Да я вообще-то битовые образы не гружу.
Добавлено Понял, про что ты.... Зачем уменьшать кол-во цветов? Я ведь и так знаю каждый цвет. |
Сообщ.
#112
,
|
|
|
angrylion
Так kbhit имеется в conio.h По крайней мере в MSVS2003. Работает без проблем. |
Сообщ.
#113
,
|
|
|
Цитата Der_Meister @ Так kbhit имеется в conio.h По крайней мере в MSVS2003. Работает без проблем. Так то ж в консольных приблудах. Или? |
Сообщ.
#114
,
|
|
|
А для неконсольных есть getch, которая уже реализована, или опять переопределять...
Структура картинок BGI: [w][w][h][h][x][x][1-2][3-4][5-6][7-8] w-ширина h-высота x-хз че, походу пустота. На начальном этапе выделяется 10 байт. Если картинка не влазит, память увеличивается с шагом в 4 байта. Короче, ща ф-цию imagesize напишу... Добавлено +imagesize Целых 11 строк Добавлено Я почти разобрался. BGI еще и строки выравнивает зачем-то. То есть какую-то дрянь после каждой строки приписывает. size=imagesize(0,0,1,0); size=10 size=imagesize(0,0,0,1); size=14 size=imagesize(0,0,0,2); size=18 size=imagesize(0,0,9,9); size=86 //Однако 6+10*10/2=56, плюс выравнивание, итого 58 size=imagesize(0,0,99,58); size=58 Получается 86-58=28 "лишних" байт. То есть по всем видам по 3 байта на строку + выравнивание до 16 бит. P.S. Я чувствую себя мастером, выполняющим подделку... |
Сообщ.
#115
,
|
|
|
Моя гипотеза [дожил, в проганье гипотезы... , все-таки как-то шатко это все...] оказалась верна: выравнивание 3 байта. Если строка одна, то выравнивание 2 байта.
[w][w][h][h][bit line][alignment] [bit line][alignment] [bit line][alignment] [bit line][alignment] ................................. [bit line][alignment] Где-то ведь в мануале видел, что 10+4+4+4.... Не помню где. Добавлено Функцию совершенно переделал, а все равно 11 строк... |
Сообщ.
#116
,
|
|
|
Hi!
kbhit() из conio.h работает только в консольных Win32 прогах афаик. Так что в либе Der Meister'a нельзя пока написать чё-нить вроде: while(!kbhit()) //с getch так нифига не выйдет, она возвращает символ, и пока чё-нить на клавиатуре не нажмёшь, цикл не начнёт выполняться { SleepEx(100,FALSE); //для задержки на 100 мс в windows.h. cleardevice(); setcolor(rand()%15); outtextxy(rand()%640,rand()%480,"\052"); //рисуем на случайн.месте звёздочку } Это типа скринсейвер такой:) kbhit() есть в ещё одной реализации BGI на винде - WinBGI. Я просто посмотрел её исходник - вроде там всё просто. Исходник WinBGI - см. http://www.garret.ru/~knizhnik/winbgi.zip Ридми к WinBGI - см. http://www.garret.ru/~knizhnik/readme.txt P.S. Я вообще только начинаю кодить, так что если чё глупое сказал, извиняюсь. |
Сообщ.
#117
,
|
|
|
kbhit реализуемо через GetKeyboardState
|
Сообщ.
#118
,
|
|
|
Цитата trainer @ kbhit реализуемо через GetKeyboardState Само собой. Просто ДМ почему-то уверен, что kbhit работает в GUI-приложениях. Или имеет более приоритетные фичи для реализации. |
Сообщ.
#119
,
|
|
|
На мой вопрос так никто и не ответил....
Похоже файл придется назвать DGML.h, а в исходнике писать так: #ifdef _WINDOWS_ #include <dgml.h> #else #include <graphics.h> #include <dos.h> //etc. #endif |
Сообщ.
#120
,
|
|
|
Цитата Der_Meister @ А для неконсольных есть getch, которая уже реализована, или опять переопределять... Нет, знамо дело... В смысле, нету ее. Цитата Der_Meister @ На мой вопрос так никто и не ответил.... Народу, видать, по-барабану... Ты писАтель тут главный - тебе и решать... |