Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Visual C++ /vs/ *.BMP :)

18K
02 октября 2006 года
Ev-Gen
14 / / 02.10.2006
Привет всем!
Народ, у меня такой вопрос, решил както реализовать небольшой редактор. пусть для начала bmp формата.
так вот, нужно открыть для чтения некий файл bmp
и записать его содержимое в двумерный массив.
ну или списками, не в этом суть.
Проблема в том, что я нигде не могу найти полное описание строения bmp рисунка.
если кто знает, буду очень признателен :)
547
03 октября 2006 года
Hydra
488 / / 20.06.2006
Глянь
http://forums.realcoding.net/index.php?showtopic=15011&pid=80461&st=0&#entry80461

Также посмотри функцию GetDIBits();
406
03 октября 2006 года
vitaly2003s
481 / / 27.07.2004
Может лучше огород не городить а использовать стандартные средства,например ATL класс CImage который позволяет работать сразу с несколькими форматами(JPEG, GIF, BMP, PNG).
18K
03 октября 2006 года
Ev-Gen
14 / / 02.10.2006
2Hydra, за ссылку спасибо!
но вот, тут в чём проблема, класс то создаётся, а вот чтобы с ним работать нужно знать само стоение картинок.. программер начинающий, ещё многого могу не до понимать... Вот и тут наверное не так понял

2vitaly2003s, а где можно узнать как этим классом пользоваться, может надо какието библиотеки подключать?
547
04 октября 2006 года
Hydra
488 / / 20.06.2006
В ссылке показан хедер битмапа (похоже без сигнатуры). Так что загружаешь файл в память, кастуешь указатель энтим типом - и вперед.
4.5K
04 октября 2006 года
e-XperT
127 / / 04.07.2006
И все равно не понятно как с этим массивом работать. Я сейчас пытаюсь разработать графический редактор а-ля Paint. В общем все сделал на GDI осталась только проблема как сделать выделение участка экрана и перемещение его по нему(select). Как с помощью этого массива определить на какой его элемент показывает указатель мыши с координатами xi и yi?
406
04 октября 2006 года
vitaly2003s
481 / / 27.07.2004
[QUOTE=Ev-Gen]2Hydra, за ссылку спасибо!
но вот, тут в чём проблема, класс то создаётся, а вот чтобы с ним работать нужно знать само стоение картинок.. программер начинающий, ещё многого могу не до понимать... Вот и тут наверное не так понял

2vitaly2003s, а где можно узнать как этим классом пользоваться, может надо какието библиотеки подключать?[/QUOTE]
Читать MSDN
547
05 октября 2006 года
Hydra
488 / / 20.06.2006
В зависимости от количества бит на пиксель :)
Если 256 цветов, то точка в элементе [yi*ImageWidth+xi] и т.п.

P.S. А про BMP формат ты все-таки почитай, почитай....
5.9K
05 октября 2006 года
Zushenskiy
161 / / 29.06.2006
Цитата:

И все равно не понятно как с этим массивом работать. Я сейчас пытаюсь разработать графический редактор а-ля Paint. В общем все сделал на GDI осталась только проблема как сделать выделение участка экрана и перемещение его по нему(select). Как с помощью этого массива определить на какой его элемент показывает указатель мыши с координатами xi и yi?



Все очень просто

Код:
RGBQUAD* pRGB = new RGBQUAD[width * height];//width, height размеры битмапки

***
//считываешь содержимое битмапки в буфер pRGB

***
short cx, cy;
int iSize = height * widht;
for (int i = 0; i < iSize; i++)
{
cx = i % width;//координата х пиксела(относительно битмапки)
cy = i / widht;//координата у пиксела(относительно битмапки)
//цвета пиксела
BYTE bRed = (pRgb + i) -> rgbRed;
BYTE bGreen = (pRgb + i) -> rgbGreen;
BYTE bBlue = (pRgb + i) -> rgbBlue;
}

таким способом тебе будет удобней работать с пикселами.
получив пиксел ты можешь с ним делать все что хочешь.:)
5.9K
05 октября 2006 года
Zushenskiy
161 / / 29.06.2006
а для получения координат былобы лучше использовать сообшения окна
к примеру ты кликнул мышью
Код:
***
WM_LBUTTONDOWN:
cx = LOWORD(lParam);
cy = HIWORD(lParam);
//проверяешь позицию битмапки
//допустим её координаты ix, iy
if (cx >= ix && cx <= width + ix && cy >= iy && cy <= height + iy)
{
//ты попал в битмапку кликом
//твой код
}
break;
***
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог