• 0
Авторизация  
M1shQa

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

Вопросы

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

Авторизация  

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

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