|
#1
|
|||
|
|||
Цвет
Здравствуйте.
Как задать цвет точки a:=image1.Canvas.Pixels[45,45]; ________________________ a:=image1.Canvas.Pixels[45,45]:=clRed; выдаёт ошибку. |
#2
|
||||
|
||||
Естественно... Ты сам то понимаешь, что пытаешься сделать этой строкой
a:=image1.Canvas.Pixels[45,45]:=clRed; ты можешь либо получить цвет точки a:=image1.Canvas.Pixels[45,45]; либо установить image1.Canvas.Pixels[45,45]:=clRed; других вариантов нет... |
#3
|
|||
|
|||
>Естественно... Ты сам то понимаешь, что пытаешься сделать этой строкой
>a:=image1.Canvas.Pixels[45,45]:=clRed; Конечно понимаю, но так как я новичок - поэтому и спросил (думал что можно как то по другому описать). Ладно тогда задача в следующем: надо сравнить две точки с одинаковыми координатами, но у одной точки цвет фиксированный (допустим красный), а вот вторая точка так как координаты определены на картинке то цвет её (точки) меняется (с каждым изменением картинки). Если цвет точки на картинке совпадают с цветом постоянной точки, то выполняется тото тото, а ежели нет то выполняется другое. Надеюсь я понятно изложил свои мысли. |
#4
|
||||
|
||||
Вполне
Код:
if image1.Canvas.Pixels[45,45] = clRed then // Совпадает else // Не совпадает Код:
if image1.Canvas.Pixels[45,45] = image2.Canvas.Pixels[5,5] then // Совпадает else // Не совпадает |
#5
|
|||
|
|||
Я так понимаю у тебя два imag'а и ты сравниваешь пиксели этих imag'ов c одинаковыми координатами, тады:
//-------------------------------- var Cl1,Cl2:TColor; begin Cl1:=Image1.canvas.pixel[x,y]; Cl2:=Image2.canvas.pixel[x,y]; if cl1=cl2 then (--твой код--) else (--твой код--); end; //-------------------------------- |
#6
|
|||
|
|||
Цитата:
Я так и написал - всё работает ,но есть одно но, координаты обоих пикселов всегда одинаковые, а надо чтобы срав нивался их цвет. |
#7
|
|||
|
|||
Ну дык Cl1=Cl2 - это и есть сравнение цветов пикселей с одинаковыми координатами.
|
#8
|
|||
|
|||
Врубился.
Компонент Image один, и сравниваю я заранее заданный цвет с цветом рисунка. А как тогда задать цвет дапустим Cl1 ? var Cl1,Cl2:TColor; begin Cl1:=Image1.canvas.pixel[x,y]; Cl2:=Image1.Picture.canvas.pixel[x,y]; if cl1=cl2 then (--твой код--) else (--твой код--); end; Последний раз редактировалось CiSi, 17.12.2006 в 15:08. |
#9
|
|||
|
|||
Тогда Если Image 1, то
if Image1.canvas.pixels[x,y]=clRed then (--твой код--) else (--твой код--); или var Cl1:TColor; begin Cl1:=Image1.canvas.pixel[x,y]; //Задаешь цвет cl1 цвет точки c координатами x,y if cl1=clred then (--твой код--) else (--твой код--); end; Конечно, если тебе надо узнать RGB, то есть такие функции: R:=GetRValue(cl1); G:=GetGValue(cl1); B:=GetBValue(cl1); Последний раз редактировалось ART, 17.12.2006 в 15:14. |
#10
|
|||
|
|||
Спасибо ART.
я зделал так: //-------------------------- begin Image1.Canvas.Pixels[50,50]:= clred; if (Image1.canvas.pixels[50,50] = clred) and (image1.Picture.Bitmap.Canvas.Pixels[50,50]= clblack) then begin image1.Canvas.Brush.Color:=clred; image1.Canvas.Ellipse(50,50,10,20); end else image1.Canvas.Brush.Color:=clBlue; image1.Canvas.Ellipse(50,50,10,20); end; //------------------------------ Но как теперь зделать так чтобы на Image1 не рисовалась точка красным цветом, а запоминаля её цвет (не знаю можно ли так зделать - бредовая наверное идея). |
#11
|
|||
|
|||
Что - то я не понял эту строчку:
if (Image1.canvas.pixels[50,50] = clred) and (image.Picture.Bitmap.Canvas.Pixels[50,50]= clblack) then |
#12
|
||||
|
||||
Цитата:
Код:
//Image1.Canvas.Pixels[50,50]:= clred; //if (Image1.canvas.pixels[50,50] = clred) and … then c1 := Image1.Canvas.Pixels[50,50]; // c1: TColor if (c1 = clred) and … then |
#13
|
|||
|
|||
>Что - то я не понял эту строчку:
>if (Image1.canvas.pixels[50,50] = clred) and (image.Picture.Bitmap.Canvas.Pixels[50,50]= clblack) then Извините опичатался: if (Image1.canvas.pixels[50,50] = clred) and (image.Picture.Bitmap.Canvas.Pixels[50,50]= clRed) then Дело вследующем: т. к. Image1.canvas.pixels[50,50]:= clred ранее присвоили красный цвет, то если Image1.canvas.pixels[50,50] = clred (а он полюбому будет красный) и image.Picture.Bitmap.Canvas.Pixels[50,50]= clRed (тоесть если точка на рисунке будет красной) то выполняется тото тото, а если условие не верно то выполняется что-то другое. Вот я ранее и спрашивал: Но как теперь зделать так чтобы на Image1 не рисовалась точка красным цветом, а запоминала её цвет (не знаю можно ли так зделать - бредовая наверное идея). Последний раз редактировалось CiSi, 17.12.2006 в 18:41. |