Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цвет пикселя


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо