• 0
M1shQa

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

Вопрос

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

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


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

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

  • 0

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

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


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

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

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

Изменено пользователем MikeWuzHere

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


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

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

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

 

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

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

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

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

 

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

Brovin Yaroslav понравилось это

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


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

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


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

    Нет пользователей, просматривающих эту страницу