Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2006, 16:07
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 10
По умолчанию Цвет

Здравствуйте.

Как задать цвет точки
a:=image1.Canvas.Pixels[45,45];
________________________

a:=image1.Canvas.Pixels[45,45]:=clRed;
выдаёт ошибку.
Ответить с цитированием
  #2  
Старый 16.12.2006, 17:03
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Естественно... Ты сам то понимаешь, что пытаешься сделать этой строкой
a:=image1.Canvas.Pixels[45,45]:=clRed;

ты можешь либо получить цвет точки
a:=image1.Canvas.Pixels[45,45];
либо установить
image1.Canvas.Pixels[45,45]:=clRed;
других вариантов нет...
Ответить с цитированием
  #3  
Старый 16.12.2006, 20:11
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 10
По умолчанию

>Естественно... Ты сам то понимаешь, что пытаешься сделать этой строкой
>a:=image1.Canvas.Pixels[45,45]:=clRed;
Конечно понимаю, но так как я новичок - поэтому и спросил (думал что можно как то по другому описать).

Ладно тогда задача в следующем: надо сравнить две точки с одинаковыми координатами, но у одной точки цвет фиксированный (допустим красный), а вот вторая точка так как координаты определены на картинке то цвет её (точки) меняется (с каждым изменением картинки). Если цвет точки на картинке совпадают с цветом постоянной точки, то выполняется тото тото, а ежели нет то выполняется другое.
Надеюсь я понятно изложил свои мысли.
Ответить с цитированием
  #4  
Старый 16.12.2006, 21:14
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Вполне
Код:
 
if image1.Canvas.Pixels[45,45] = clRed then
   // Совпадает
else
   // Не совпадает
или
Код:
 
if image1.Canvas.Pixels[45,45] = image2.Canvas.Pixels[5,5] then
   // Совпадает
else
   // Не совпадает
Ответить с цитированием
  #5  
Старый 16.12.2006, 21:14
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Я так понимаю у тебя два 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  
Старый 17.12.2006, 09:28
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от ART
Я так понимаю у тебя два 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;
//--------------------------------

Я так и написал - всё работает ,но есть одно но, координаты обоих пикселов всегда одинаковые, а надо чтобы срав нивался их цвет.
Ответить с цитированием
  #7  
Старый 17.12.2006, 13:49
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Ну дык Cl1=Cl2 - это и есть сравнение цветов пикселей с одинаковыми координатами.
Ответить с цитированием
  #8  
Старый 17.12.2006, 15:05
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 10
По умолчанию

Врубился.
Компонент 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  
Старый 17.12.2006, 15:12
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Тогда Если 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  
Старый 17.12.2006, 16:00
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 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  
Старый 17.12.2006, 16:05
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Что - то я не понял эту строчку:
if (Image1.canvas.pixels[50,50] = clred) and (image.Picture.Bitmap.Canvas.Pixels[50,50]= clblack) then
Ответить с цитированием
  #12  
Старый 17.12.2006, 16:27
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Цитата:
Но как теперь зделать так чтобы на Image1 не рисовалась точка красным цветом, а запоминаля её цвет (не знаю можно ли так зделать - бредовая наверное идея).
Код:
//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) andthen
Ответить с цитированием
  #13  
Старый 17.12.2006, 18:38
CiSi CiSi вне форума
Прохожий
 
Регистрация: 16.12.2006
Сообщения: 9
Репутация: 10
По умолчанию

>Что - то я не понял эту строчку:
>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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter