Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 17:30   #1
kudasov
 
Регистрация: 14.06.2013
Сообщений: 3
По умолчанию Как получить доступ к массиву пикселов DIB

Добрый день.
Создаю HBITMAP
Код:
var
  bi: BITMAPINFO;
  hB: HBITMAP;
  DC: HDC;
  Scr: Pointer;
begin
  DC := CreateCompatibleDC(0);

  FillChar(bi, SizeOf(bi), 0);
  bi.bmiHeader.biSize := SizeOf(BITMAPINFOHEADER);
  bi.bmiHeader.biWidth := asize.cx;
  bi.bmiHeader.biHeight := asize.cy;
  bi.bmiHeader.biPlanes := 1;
  bi.bmiHeader.biBitCount := 32;
  bi.bmiHeader.biCompression := BI_RGB;
  bi.bmiHeader.biSizeImage := asize.cx * asize.cy * 4;

  Scr := nil;
  hB := CreateDIBSection(DC, bi, DIB_RGB_COLORS, Scr, 0, 0);
Как получить доступ к R,G,B,A значениям каждого пиксела через указатель Scr?
Спасибо
kudasov вне форума Ответить с цитированием
Старый 23.09.2013, 08:52   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

В модуле Windows описан стандартный тип TRGBQuad, но он только для одного цвета, а не для массива. Я бы описал свои типы, ибо TRGBQuad кажется дурацким:
Код:
type
  TAlphaRGB = packed record
    Blue, Green, Red, Alpha: Byte;
  end;

  PAlphaDIB = ^TAlphaDIB;
  TAlphaDIB = array[0..MaxInt div SizeOf(TAlphaRGB) - 1] of TAlphaRGB;

var
  Scr: PAlphaDIB;
begin
  ...
  Scr := AllocMem(asize.cx * asize.cy * SizeOf(TAlphaRGB)); // заполняет нулями = черным
  Scr[0].Red := $FF; // ставим красную точку
end;
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить доступ к диску С Daif2 Помощь студентам 1 06.07.2012 20:42
Как получить доступ к данным документа iceman2112 Visual C++ 0 04.04.2011 17:52
Как получить доступ к сайту в DELPHI cowboy Общие вопросы Delphi 8 10.09.2009 16:12
Как получить доступ к данным kiber0net0 Помощь студентам 2 03.09.2008 08:14
Как получить доступ к ячейке DBGrid RatMir БД в Delphi 1 16.06.2008 22:35