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