Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание пикселя, Функция вместо GetPixel 
:(
    Опции темы
welt
Дата 15.4.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



Есть такая потребность сделать аналог GetPixel, но более быстрый.
Вот какой код получился после поиска в интеренете. Где-то выкладывали на с++.
Но эта функция и GetPixel выдают разные значения.
В чем может быть причина?

Код

function MyGetPixel(hGame:HWND; x,y:integer):COLORREF;
const
    BITS_IN_BYTE = 8;
    GR_MODE_BYTES = 4;
    GR_MODE_BITS = GR_MODE_BYTES * BITS_IN_BYTE;

var
pixel:COLORREF;
BMI:TBITMAPINFO;
hGDC    : HDC;
Bitp    : integer;
hTmpDC  : HDC ;
hTmpBmp : HBITMAP;
TMP     : Integer;

begin
//        BMI:=0;
        hGDC:=GetDC(hGame);
        Bitp:=GetDeviceCaps(hGDC, BITSPIXEL);
        hTmpDC:=CreateCompatibleDC(hGDC);
        hTmpBmp:=CreateCompatibleBitmap(hGDC,1,1);

        SelectObject(hTmpDC,hTmpBmp);
        BitBlt(hTmpDC,0,0,1,1,hGDC,x,y,SRCCOPY);
        BMI.bmiHeader.biSize := sizeof(BMI.bmiHeader);
        BMI.bmiHeader.biWidth := 1;
        BMI.bmiHeader.biHeight := 1;
        BMI.bmiHeader.biPlanes := 1;
        BMI.bmiHeader.biBitCount := Bitp; //GR_MODE_BITS;
        BMI.bmiHeader.biCompression := BI_RGB;
        BMI.bmiHeader.biSizeImage:=Bitp div 8; //{GR_MODE_BYTES*}bmi.bmiHeader.biWidth * bmi.bmiHeader.biHeight;
        BMI.bmiHeader.biClrUsed := 0;
        BMI.bmiHeader.biClrImportant := 0;
        TMP:=GetDIBits(hTmpDC,hTmpBmp,0,1,@pixel,BMI, DIB_RGB_COLORS);
        Pixel:=Pixel and $FFFFFF;
        ReleaseDC(hGame,hGDC);
        Result:=pixel;
end;

PM MAIL   Вверх
Bitter
Дата 15.4.2011, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 6
Всего: 27



Используй ScanLine
PM MAIL ICQ Skype   Вверх
welt
Дата 15.4.2011, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



нет, надо на Win Api чтобы можно было откомпилировать без всяких встроенных функций
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.