| Типы программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
Фичя,Помогите! Шрифты Как определить сколько раз запущен фаил? Хм......, Э....Сори... Глюк в Animated Menus! Странная DLL, с ресурсами Иконка в системном трее, статья Сервис + иконка в трее Как читать ATIP несколько процессов последовательно Звуковая карта, Определить DLL???, Туча вопросов помогите!! Низкоуровневый перехват мыши, работа с ловушками Как минимизировать все окна Как Вы относитесь к курящим девушкам? Нужен хелп (работа с реестром: LoadKey), Не работает LoadKey Узнать частоту обновления экрана?, Win9X, WinXP Использование dll, Выход из процедурыи дельфи Синхронизация при помощи крит. секции, как??? Изменение иконки в систрее WinAmp, Компоненты Как Вы относитесь к курящим девушкам? Установка компонентов из .pas файлов перекомпиляция system.pas, ... нужен debug режим Где искать буфер TBitmap TFileStream, Поиск SMART API asm-вставки в делфи Список используемых dll, Чужого приложения Формы, окна Скрыть приложение из ALT+TAB и списка приложений., Как скрыть в windows xp\2k Потоки и процессы, реализация задачи Как сконвертировать String в HKEY правильно?!, HKEY(Text: String) работает некорректно Создание потоков, TThread наверное? "Послать" сообщение Удаление расшаренных ресурсов Нафигация по файловой системе, как реализовать? Как запустить чужой exe, как поток к своей программе Защита от копирования Вопрос по коду., Работа с окнами Блокировать вывод на экран Сообщение своей проге по сети, Как послать сообщ. своей проге по сети? Мигающая иконка в System Tray, Заставить мигать иконку в System Tray Определить номер кластера HDD, Программное определение номера кластера Рассылка почты с помощью Делфи, Рассылать письма (адреса одинаковые) Сервисы, Не работает Копирование файлов..., ...используя "msctls_progress32" Реестр + ExtractIcon CloseWindow(FindWindow(nil,pchar(filename)));, не закрывает окно а сворачивает почему? Виртуальный диск, Как создать? Реестр и wallpaper(как?), Реестр и wallpaper(как?) Ошибка, Прога полностью на WinAPI Перехват API функции, Простой пример id иконки в трее, ...как определить Отслеживание деятельности сторонних программ, обращения к диску, процессор и память ICQClient событие OnStatusChange не отрабатывается, Как получить статус уина? Как получить инфу о сервисе в ХР? Изменить Папку Рабочий стол Как сейчас на счет бесплатного Delphi 6 personal QueryPerformanceCounter, Определить загрузку процессора Использование файла подкачки, какую пользу извлечь? Импорт файлов реестра, Нужен програмный импорт файлов реестра А-у! Дельфи 7.0 взбесился, Посоветуйте, что делать EXE и CD, EXE и CD Как отловить когда жмут "Свернуть все окна"?, Application.OnMinimize не происходит Несовместимость..., String and PWideChar Как Вы относитесь к курящим девушкам? Обноновить конфигурацию оборудования, естно программно :) Служба индексирования SystemTr(a)y... Или "...место где часы...", SystemTr(a)y... Или "...место где часы.. |
Платные хостинги Раскрутка сайта Книги по программированию Где искать буфер TBitmap
- Люди добрые помогите, где мне отыскать адрес буфера (ну где хрянятся все пиксели в виде dw), мне просто нужен быстрый доступ к этим самым пикселям и я хочу писать алгоритм обработки на asm, но я не знаю как и где этот буфер храниться... Помогите... Зараннее спасибо. - Насколько я помню, нигде.Можешь попробовать сохранить в буффер, модифицировать и загрузить обратно. - Я слышал, что надо рыть где-то в GetDIBits, GetDIB, GetDIBSizes но я с Win API не дружу помогите мне плиз. - Например: Код function HBitmapToCanvas(Source:HBitmap;Canvas:TCanvas;AlphaClr:TColorRef;var Rec:TRect):boolean;var bmInfo:BITMAPINFO; W,H:Integer; X,Y,i:Integer; bmDIB:HBitmap; tColor:TColorRef; MemBits:PRGBTriple;begin Result:=false; if Source=0 then exit; GetObject(Source,SizeOf(bmInfo),@bmInfo); W:=bmInfo.bmiHeader.biWidth; H:=bmInfo.bmiHeader.biHeight; if (W=0)and(H=0) then exit; Rec:=Rect(0,0,W,H); i:=(W*3)-((W*3) div 4)*4; if i<>0 then i:=4-i; bmInfo.bmiHeader.biWidth:=W; bmInfo.bmiHeader.biHeight:=H; bmInfo.bmiHeader.biPlanes:=1; bmInfo.bmiHeader.biBitCount:=24; bmInfo.bmiHeader.biCompression:=BI_RGB; bmInfo.bmiHeader.biSizeImage:=0; bmInfo.bmiHeader.biXPelsPerMeter:=2834; bmInfo.bmiHeader.biYPelsPerMeter:=2834; bmInfo.bmiHeader.biClrUsed:=0; bmInfo.bmiHeader.biClrImportant:=0; bmInfo.bmiHeader.biSize:=SizeOf(bmInfo.bmiHeader); bmDIB:=CreateDIBSection(Canvas.Handle,bmInfo,DIB_RGB_COLORS,Pointer(MemBits),0,0); bmInfo.bmiHeader.biWidth:=W; bmInfo.bmiHeader.biHeight:=H; bmInfo.bmiHeader.biPlanes:=1; bmInfo.bmiHeader.biBitCount:=24; bmInfo.bmiHeader.biCompression:=BI_RGB; bmInfo.bmiHeader.biSize:=SizeOf(bmInfo.bmiHeader); GetDIBits(Canvas.Handle,Source,0,H-1,MemBits,bmInfo,DIB_RGB_COLORS); Y:=H; repeat dec(Y); X:=0; while X<W do begin tColor:=RGB(MemBits.rgbtRed,MemBits.rgbtGreen,MemBits.rgbtBlue); if (tColor<>AlphaClr) then Canvas.Pixels[X,Y]:=tColor; Inc(MemBits); inc(X); end; PChar(MemBits):=PChar(MemBits)+I; until (Y=0); DeleteObject(bmDIB); Result:=true;end;highlightSyntax('delphiMWQ4Zj','delphi'); Это сообщение отредактировал Girder - 31.5.2005, 11:14 - Если речь про TBitmap (судя по названию темы) - то делай Bmp.ScanLine[0] - адрес начала буфера. Чтобы они были в виде "dw", то предварительно нужно выставить bmp.PixelFormat := pf32bit. Сделай на форуме поиск по слову "ScanLine", найдешь примеры... - > Bmp.ScanLine[0] - адрес начала буфераНе совсем так. В большинстве битмапов строки лежат в обратном порядке, поэтому началом будет Bmp.ScanLine[Height-1] А для определения нужно помотреть в InfoHeader знак поля biHeightbiHeightSpecifies the height of the bitmap, in pixels. If biHeight is positive, the bitmap is a bottom-up DIB and its origin is the lower left corner. If biHeight is negative, the bitmap is a top-down DIB and its origin is the upper left corner. - Верно подмечено - Если это конечно то что тебе нужно но за пикселю в этой компоненте отвечает свойство TBitmap.Handle. Указатель на табицу пикселей. Аналогично TBitmap.Palette - указатель на палитру. - poor_yorikЭто совсем не то - Совсем не так. Знак biHeight проверяет сама функция GetScanLine перед выдачей результата. Тобишь, ScanLine[0] будет адресом первой строки при любой власти. - Dmitry V.Abramov>ScanLine[0] будет адресом первой строки Это адрес ВЕРХНЕЙ строки при выводе битмапа, но не всегда начало адресного пространства, отведенного под пиксельный буфер |