помогите кто-нибудь. неделю уже ищу по всему инету, а найти не могу. нужно всего-то загрузить bmp с диска, заменить все нечерные пикселы на белые, разбить его на 3 части и сохранить. на дельфе я это за 5 мин сделал, а на VC не иогу...
LoadImage Создаём Ч/Б DC: CreateCompatibleDC Устанавливаем фоновый цвет (чёрный): SetBkColor Грузим в этот DC битмап: SelectObject Всё. BitBlt по частям в другие DC. пример в MSDN.
Что-то не получается преобразовать изображение в монохромное. Или вместо картинки просто чернота, или она бело-хрен_понять_какая. Простое изменение biBitCount в PBITMAPINFO не помогает. Помогите plz!!!
Воспользуйся GetDIBits, чтобы получить матрицу пикселей, и пройдись по ней, устанавливая все ненулевые пиксели в FFFFFF.
Попробуй покурить сурсы из аттача. Это не совсем то, что тебе надо, но может спасти отца русской демократии. Там две мои програмки, которые используют GDI+. Первая - грузит картинку из файла и отображает на окне. Вторая чисто на случай если тебе приходится крузить картинку не из файла, тогда это можно сделать через IStream - там он местами используется. Программа делает скриншет экрана и сохраняет в формате png. В общем тебе должно стать понятно, как работает CGI+ и COM (IStream, IImage, IGraphics) на чистом апи. Затем идешь на msdn.microsoft.com и ищешь функции для попиксельной обработки изображения. Алгоритм такой - получаешь размер картинки (если он зарание не известен) и для каждого пикселя[i,j] если он не черный сделать его белым. Ну и там же функции для "резанья".
chatty2 Создаём Ч/Б картинку: Код (Text): invoke CreateBitmap,width,height,1,1,0 Помещаем её в DC. Устанавливаем цвет фона и накладываем с помощью BitBlt оригинальную картинку. Вот пример в MSDN. То, что они называют "AND mask", как раз и является Ч/Б преобразованием оригинальной картинки.
Хм.. кажется я пальнул из пушки по воробью. короче не слушай меня - делай как cresta и Quantum говорят
да нет, спасибо. я решил написать одинаковую прогу на delphi, vc и asm. а то все как-то больше на дельфе, вот и решил vc и asm подучить. а вообще, сделать ч/б картинку у меня получается. но у нее размер 4 кило. я хочу ее уменьшить до правильных 500 байт, но не получается. вот если бы кто подсказал, как ...
она у тебя и будет 4 кб, т.к. замена цветов не меняет формата рисунка. Каким бы способом ты не менял пиксели. Он как был, так и останется 24-битным. Получаи DIB исходного рисунка, создай DIB для своего черно-белого и заполняй самостоятельно в соответствии с цветами исходного рисунка. Затем когда черно-белый будет заполнен, сохрани его в рисунок.
thx всем! я думал над этим способом, и мне он показался не совсем правильным. поэтому и спрашиваю. ну раз нет другого способа, буду так делать. а вообще у меня почти получалось, просто изменяя кол-во бит, описывающих 1 пиксел. но при этом портится картинка, хотя там только ч. и б. цвета.
Изменять количество бит в описании недостаточно, надо чтобы биты в памяти располагались с соответствие с твоим описанием. Видимо их расположение не соответствует, отсюда и портится картинка. Для 24-битных понятно как располагать биты, а для черно-белых я даже и не припомню, видел ли эту структуру вообще.