Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #2  
Старый 21.11.2010, 21:21
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Просто, но медленно:
Код:
var bmp:TBitmap;
     value:TColor
...
value:=bmp.Canvas.Pixels[x, y];
Не так просто, но быстро:
Код:
function GetPixel(Bitmap: TBitmap; X,Y: Integer): TColor;
var b:PByteArray;
    p:PRGBTriple;
    q:PRGBQuad;
begin
  Result:=0;
  if Bitmap.PixelFormat=pf8bit then
    begin
      b := pByteArray(Bitmap.ScanLine[Y]);
      Result:=RGB(b[X], b[X], b[X]);
    end
  else if Bitmap.PixelFormat=pf24bit then
    begin
      DWORD(p) := DWORD(Bitmap.ScanLine[Y]) + (X * SizeOf(TRGBTriple));
      Result:=RGB(p.rgbtRed, p.rgbtGreen, p.rgbtBlue);
    end
  else if Bitmap.PixelFormat=pf32bit then
    begin
      DWORD(q) := DWORD(Bitmap.ScanLine[Y]) + (X * SizeOf(TRGBQuad));
      Result:=RGB(q.rgbRed, q.rgbGreen, q.rgbBlue);
      //Result:=RGB(q.rgbRed, q.rgbGreen, q.rgbBlue) or (q.rgbReserved shl 24); //Если нужен альфа-канал
    end;
end;
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025