Перейти к содержанию
Fire Monkey от А до Я
  • 0

Определение координат и отрисовка там картинки


M1shQa

Вопрос

Суть проблемы: есть приложение, на нем отрисовывается схема квартиры (приложение под андроид) на этой схеме есть пиксели определенного цвета, отвечающие за координаты лампочки. Мне необходимо: найти эти пиесели и по их координатам разместить там компонент с картинкой (саму лампочку). Как это возможно реализовать? Особенно учитывая то, что экраны у всех мобильников разные..

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Кто рисует эти пиксели определенного цвета? Приложение со схемой - ваше или стороннее?

я сам могу это сделать, просто мне каким то образом нужно определять координаты для выставления лампочек на автомате, вот и предположил, что можно по метке какой нибудь это сделать. У меня же есть по приемке сама схема и картинки с лампами (активная и не активная).

Изменено пользователем MikeWuzHere
Ссылка на комментарий
  • 0

Вы не ответили на вопрос. Слова "по приемке" для меня и, думаю, большинства остальных посетителей форума ничего не скажут.

Я понимаю, что вы можете это сделать, но испытываете какие-то затруднения, иначе не задали бы этот вопрос.

 

Давайте уйдем от специфики вашей области и оставим чисто программные понятия (дальше нужны ваши уточнения):

1. Стороннее приложение (а сторонее ли, или ваше ? Это очень важный момент) рисует что-то.

1. Это что-то сохраняется как ...??? Совершенно непонятно, что вы имеете ввиду под словом "схема" - это может быть что угодно, включая никому кроме автора неизвестный формат.

2. есть необходимость найти на ней пиксели определенного цвета и поверх них отрисовать картинку.

 

В общем - конкретизируйте вашу задачу. Перечитайте свой вопрос с точки зрения человека, который первый раз его видит и вообще "не в теме", что там у вас за лампочки и схемы.

Ссылка на комментарий
  • 0
 

 

Вы не ответили на вопрос. Слова "по приемке" для меня и, думаю, большинства остальных посетителей форума ничего не скажут.

Я понимаю, что вы можете это сделать, но испытываете какие-то затруднения, иначе не задали бы этот вопрос.

 

Давайте уйдем от специфики вашей области и оставим чисто программные понятия (дальше нужны ваши уточнения):

1. Стороннее приложение (а сторонее ли, или ваше ? Это очень важный момент) рисует что-то.

1. Это что-то сохраняется как ...??? Совершенно непонятно, что вы имеете ввиду под словом "схема" - это может быть что угодно, включая никому кроме автора неизвестный формат.

2. есть необходимость найти на ней пиксели определенного цвета и поверх них отрисовать картинку.

 

В общем - конкретизируйте вашу задачу. Перечитайте свой вопрос с точки зрения человека, который первый раз его видит и вообще "не в теме", что там у вас за лампочки и схемы.

 

 

Я Вас услышал. В моем приложении есть картинка, просто картинка отрисованая компонентом TImageViewer, далее на определенных координатах на этой картинке мне нужно отрисовывать другие картинки, вот как это сделать? все картинки у меня сохранены в приложении. Т.е. я хочу нарисовать на TImageViewer поверх еще картинки, что бы они крепились в определенных местах вне зависимости от размера экрана, а TImageViewer у меня тянется на весь экран (Алигн стоит Клиент).

Изменено пользователем MikeWuzHere
Ссылка на комментарий
  • 0

Определить координату по цвету пикселя можно так:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.ScrollBox, FMX.Memo;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
  bd: TBitmapData;
  bm:TBitmap;
  i,j,cnt:integer;
  ac:TAlphaColor;
begin
  cnt:=0; // количество
  bm:=Image1.MultiResBitmap.Items[0].Bitmap;
  bm.Map(TMapAccess.Read, bd);

  for i:=0 to bd.Width do
    for j:=0 to bd.Height do
    begin
      ac:=bd.GetPixel(i,j);
      if ac=TAlphaColorRec.Red then //4294901760=$FFFF0000
      begin
        cnt:=cnt+1;
        Caption:='i='+i.ToString+',j='+j.ToString+' кол-во='+cnt.ToString;
        Sleep(300);
      end;
    end;

  Bm.Unmap(bd);
end;

end.

Использовал TImage, а не TImageViewer (думаю не принципиально). Загрузил картинку, на которой поставлены

 в графическом редакторе красные точки (цвет FFFF0000).

 

 

Bezymiannyi.png

 

Склеить два битмапа наверное можно так: http://docwiki.embarcadero.com/CodeExamples/Seattle/en/CreateFromBitmapAndMask_(Delphi)

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Определить координату по цвету пикселя можно так:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.ScrollBox, FMX.Memo;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
  bd: TBitmapData;
  bm:TBitmap;
  i,j,cnt:integer;
  ac:TAlphaColor;
begin
  cnt:=0; // количество
  bm:=Image1.MultiResBitmap.Items[0].Bitmap;
  bm.Map(TMapAccess.Read, bd);

  for i:=0 to bd.Width do
    for j:=0 to bd.Height do
    begin
      ac:=bd.GetPixel(i,j);
      if ac=TAlphaColorRec.Red then //4294901760=$FFFF0000
      begin
        cnt:=cnt+1;
        Caption:='i='+i.ToString+',j='+j.ToString+' кол-во='+cnt.ToString;
        Sleep(300);
      end;
    end;

  Bm.Unmap(bd);
end;

end.

Использовал TImage, а не TImageViewer (думаю не принципиально). Загрузил картинку, на которой поставлены

 в графическом редакторе красные точки (цвет FFFF0000).

 

 

Bezymiannyi.png

 

Склеить два битмапа наверное можно так: http://docwiki.embarcadero.com/CodeExamples/Seattle/en/CreateFromBitmapAndMask_(Delphi)

 

Спасибо огромное, буду теперь переписывать на си это и пытаться по этим координатам влепить картинку, только сразу так не вкурил, где выводятся координаты? ну или в каком фрагменте можно записать эти координаты в переменные? 

Изменено пользователем MikeWuzHere
Ссылка на комментарий
  • 0

Спасибо огромное, буду теперь переписывать на си это и пытаться по этим координатам влепить картинку, только сразу так не вкурил, где выводятся координаты? ну или в каком фрагменте можно записать эти координаты в переменные?

В данном случае координаты выводятся в Caption (см. переменные i и j), но вы можете сохранять их куда вам нужно

Caption:='i='+i.ToString+',j='+j.ToString+' кол-во='+cnt.ToString;

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...