![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Наверное сто раз обсуждалось, но не могу найти. Вопрос такой: нужно получить значение цвета в пикселе с координатой (i, j) из MyPicTPicture.
Заранее благодарен. Делаем'c разные игры. Искать на glscene.ru |
#2
|
||||
|
||||
![]() Просто, но медленно:
Код:
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; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |