Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2010, 19:37   #1
sergeyrulit
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 53
Восклицание Узнать цвет пикселя.

Потерял один полезный исходник, там был пример как определить цвет пикселя в нужных координатах. Помогите кодом. Цвет пикселя нужно определить в TImage допустим в координатах 4;3. В том исходнике помойму определялись r, g, b и потом складывались.
sergeyrulit вне форума Ответить с цитированием
Старый 01.07.2010, 20:00   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Не совсем ясно, что вам нужно. Цвет пиксела - это грубо говоря integer. 1 бит отвечает не помню за что. затем 3 бита - r, g, b соответственно. Возможно в обратном порядке. Точно не помню. Так вот. Что вы имеете ввиду под определением цвета? Вам нужный пиксел разбить на РГБ или по заданному РГБ сформировать цвет? Ибо первое сложение не предполагает. А вот второе да.
mMAg вне форума Ответить с цитированием
Старый 01.07.2010, 20:20   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Canvas.Pixels[4,3]
Цитата:
Сообщение от mMAg
1 бит отвечает не помню за что. затем 3 бита - r, g, b соответственно.
Не биты, а байты.
Arigato вне форума Ответить с цитированием
Старый 01.07.2010, 22:16   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Canvas.Pixels[4,3]

Не биты, а байты.
Полностью согласен. Окалякался.
mMAg вне форума Ответить с цитированием
Старый 01.07.2010, 23:00   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Можно так:
Код:
//рисуем цветные прямоугольнички
procedure TForm1.FormCreate(Sender: TObject);
const
  CountRect = 9; //количество прямоугольничков
var
  i, x1, x2: integer;
begin
  Randomize;
  with Image1.Canvas do
  begin
    x1 := 10;
    x2 := 30;
    for i := 1 to CountRect do
    begin
      // генерируем различные цвета для прямоугольников
      Brush.Color := RGB(Random(255), Random(255), Random(255));
      //рисуем прямоугольнички
      RectAngle(x1, 20, x2, 40);
      Inc(x1, 25);
      Inc(x2, 25);
      // выводим список цветов :) прямоугольников
      Label1.Caption := Label1.Caption + #13#10 + ColorToString(Brush.Color);  //получаем цвет в 16-ом виде
    end;
  end;
end;

//берем цвет под курсором.
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  lColor: TColor;
begin
  //берем цвет под курсором
  lColor := Image1.Canvas.Pixels[X, Y];
 //выводим в Label;
  Label2.Caption := ColorToString(lColor) //получаем цвет в 16-ом виде
end;


Для большинства задач этого, на мой взгляд, хватает. Можно вытащить в удобочитаемом виде. Чтобы в Label содержалось:
Красный = 74 Зеленый = 159 Голубой = 63. Если надо - напишу как сделать.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 01.07.2010 в 23:12.
Roof вне форума Ответить с цитированием
Старый 02.07.2010, 11:29   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Roof
Голубой
Вообще-то синий. Голубой - это синий + зеленый.
Цитата:
Сообщение от Roof
Можно вытащить в удобочитаемом виде.
GetRValue, GetGValue, GetBValue.
Arigato вне форума Ответить с цитированием
Старый 02.07.2010, 11:55   #7
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Нну да, насчет голубого я переборщил
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать цвет пикселя в TImage , если там не bmp а jpg Dima_Dima Общие вопросы Delphi 0 31.05.2010 14:12
как в jpg узнать цвет пикселя без конвертирования в bmp? ????????????????? Dima_Dima Помощь студентам 0 26.05.2010 18:51
Узнать цвет пикселя в Timage, если там не bmp а jpeg? TwiX Общие вопросы Delphi 4 27.09.2009 19:11
определить цвет каждого пикселя Dimarik Общие вопросы C/C++ 4 17.08.2009 16:21
Узнать цвет пикселя на экране, без снимка экрана. Alex Cones Общие вопросы Delphi 3 03.08.2009 12:02