![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет пикселя
Out © (2005-09-17 08:51:00)Суть такова: есть форма, на ней есть Image, в него загружен рисунок. Необходимо узнать цвет пикселя в месте кллика мышкой на Image
Trash (2005-10-11 17:57:00) [1]Вот еще примеры...
var
DC: HDC;
Color: Cardinal;
begin
DC := CreateDC ('MONITOR', nil, nil, nil);
Color := GetPixel(DC, x, y);
DeleteDC(DC);
end;
-----------------------------------------------------------------------------
var
DC: HDC;
Color: Cardinal;
begin
DC :=GetDC(0);
Color := GetPixel(DC, x, y);
ReleaseDC(0,DC);
end;
PAVIA (2005-09-25 13:49:00) [2]uses jpeg;
...
Преоброзовываем из jpge в bmp
1.
var bp:TBitmap;
begin
bp:=TBitmap.Create;
bp.Width:=image1.Picture.Width;
bp.Height:=image1.Picture.Height;
bp.Canvas.Draw(0,0,Image1.Picture.Graphic);
image1.Picture.Bitmap:=bp;
bp.Free;
end;
или
2.
bp:=TBitmap.Create;
bp.Assign(image1.picture.Graphic);
image1.picture.Bitmap.Assign(bp);
Говорят что 1. Способ лучше работает.
И вот тебе пример вывода цвета
caption:=format('RGB=%d,%d,%d',[GetRValue(Image1.Canvas.Pixels[x,y]),GetGValue(Image1.Canvas.Pixels[x,y]),GetBValue(Imag e1.Canvas.Pixels[x,y])])
Аноним (2005-09-25 13:33:00) [3]Покаместь так...
работает с MouseMove и файл bmp
с кликом нужно подумать...
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var col: TColor;
begin
col := Image1.Picture.Bitmap.Canvas.Pixels[x,y];
label1.Caption:= IntToStr(col);
end;
Fenik (2005-09-25 11:57:00) [4]Image.CANVAS.Pixels[X,Y]
Out (2005-09-25 10:58:00) [5]НЕ ИДЁТ!!!
В Image загружен bmp файл но по клику на нём и при участии кода
Image.Picture.Bitmap.CANVAS.Pixels[X,Y]
устанавливается цвет FFFFFF независимо от места клика
SergProger (2005-09-20 01:51:00) [6]Я слышал про какой-то стандартный модуль, который работает именно с JPEG. Вроде о нём я узнал на DelphiGFX.
out (2005-09-17 10:03:00) [7]А с JPEG` ом никак?
MBo (2005-09-17 09:58:00) [8]Сначала преобразуй JPG в BMP, потом грузи в Image
out (2005-09-17 09:51:00) [9]Точно, забыл указать... Но проблема остаётся... Уточню: в image загружается файл jpg
MBo (2005-09-17 09:46:00) [10]>out
Очевидно, у тебя в Image не битмап, а Jpeg.
out (2005-09-17 09:44:00) [11]ДА? Тогда кто мне объяснит, почему при использовании того что написано выше делфя даёт такую ошибку:
"Can only modify an image if it contains a bitmap" ?
out (2005-09-17 09:44:00) [12]ДА? Тогда кто мне объяснит, почему при использовании того что написано выше делфя даёт такую ошибку:
"Can only modify an image if it contains a bitmap" ?
out (2005-09-17 09:43:00) [13]ДА? Тогда кто мне объяснит, почему при использовании того что написано выше делфя даёт такую ошибку:
"Can only modify an image if it contains a bitmap" ?
Xerx (2005-09-17 09:40:00) [14]> MBo
В реализации да, но не в использовании.. ;)
MBo (2005-09-17 09:34:00) [15]>Xerx
Pixels - свойство, доступное и для чтения, и для записи
Xerx (2005-09-17 09:33:00) [16]Я имел ввиду как MBo, т.к. Pixels[x,y] - массив, а не метод!
MBo (2005-09-17 09:32:00) [17]PixColor:=Image.Canvas.Pixels[x,y];
и все...
out (2005-09-17 09:23:00) [18]
> Image.Picture.Bitmap.Pixels[X,Y] <- на случай если загружен
> DIB
Не загружен...
А без него этот метод не работает... Если я правильно понял, Image.Picture.Bitmap.Pixels[X,Y] не даёт значение цвета, он просто окрашивает пиксел в заданный цвет, то есть
Image.Picture.Bitmap.Pixels[X,Y]=clRed
Xerx (2005-09-17 09:12:00) [19]Блин, надо:
Image.Picture.Bitmap.CANVAS.Pixels[X,Y]
Xerx (2005-09-17 09:11:00) [20]Image.Picture.Bitmap.Pixels[X,Y] <- на случай если загружен DIB