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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2022, 11:20   #1
TipaTipothek
Новичок
Джуниор
 
Регистрация: 27.01.2022
Сообщений: 3
По умолчанию tImage координаты

Форма. На ней scroolbox, в нём tImage. Размеры tImage меняю параметрами width\headg
При mousMove на image у меня есть координаты мышки в данной позиции, и я что то рисую на другом битмапе второго image что поверх картинки с фоном с заданными координатами.

Теперь вопрос. Для масштабирования рисунка (фон и то что рисую на другом) хочу то, что я рисую, привязать не к координатам image, а к координатам реальных размеров картинки (которые получаю например так. form1.ImageFon.Bitmap.Height), т е к реальным координатам точки на картинке, а не к координатам Х У по размеру image, чтоб при масштабировании то что я нарисую на втором битмапе, и наложении его на первый, то что я нарисовал было в правильном месте.
TipaTipothek вне форума Ответить с цитированием
Старый 27.01.2022, 11:27   #2
TipaTipothek
Новичок
Джуниор
 
Регистрация: 27.01.2022
Сообщений: 3
По умолчанию

или как по mouseMove получить координаты не Х У в границах image.width/headth а в координатах реального размера изображения Image.Bitmap.Height/width
TipaTipothek вне форума Ответить с цитированием
Старый 27.01.2022, 16:11   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Вот кусок кода из моей программы
Код:
{Предназначен для квадратных Image с включенным Proportional, чтобы по координатам Image найти координаты на изображении}
Function KvPrImageKoeff(Im: TImage):real;
begin
  If (Im.Height<Im.Picture.Height) or (Im.Width<Im.Picture.Width) then begin
    If Im.Picture.Height>Im.Picture.Width then begin
      Result:=Im.Picture.Height/Im.Height;
    End else begin
      Result:=Im.Picture.Width/Im.Width;
    End;
  end else Result:=1;
end;
Kronos913 вне форума Ответить с цитированием
Старый 28.01.2022, 10:14   #4
TipaTipothek
Новичок
Джуниор
 
Регистрация: 27.01.2022
Сообщений: 3
По умолчанию

Не. это не то.
Например размеры картинки в tImage = 200*125 пикселей.
Размер самого image например 100*50 или 300*200, вообщем произвольный размер.
Картинка пропорционально вписана в размер этого image.
Мне нужно найти по координатам из moseMove (x,y) координаты пикселя на самой картинке, не зависимо от масштаба самой картинки внутри tImage.
Т.е. при движении мышки я получаю координаты х,у в координатной сетке (0,0, image.width, image.height), а мне нужно получать координаты под мышкой в координатах (0, 0, Image.Bitmap.width, Image.Bitmap.height)
TipaTipothek вне форума Ответить с цитированием
Старый 28.01.2022, 11:52   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
получаю координаты х,у в координатной сетке (0,0, image.width, image.height)
Цитата:
пропорционально вписана в размер этого image.
Цитата:
а мне нужно получать координаты под мышкой в координатах (0, 0, Image.Bitmap.width, Image.Bitmap.height)
Код:
xx:=round ( x / (image.width / bitmap.width) );
Код:
r:= x /image.width; //  (0... 1)  --'относительное смещение' в image 
d:=r * bitmap.width; // "абсолютное смещение" в bitmap
xx:=round(d); //убираем "неполный пиксел"
для y аналогично.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.01.2022 в 11:59.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как пересчитать координаты точки диаграммы в координаты экрана. alex77755 Microsoft Office Excel 3 19.05.2017 13:32
Получить координаты и размер битмапа относительно TImage Тоба Общие вопросы Delphi 5 30.12.2015 23:25
Даны координаты трёх точек, являющихся вершинами некоторого параллелограмма. Найти координаты четвертой вершины. yamato_pm Паскаль, Turbo Pascal, PascalABC.NET 1 18.12.2013 19:42
Даны координаты n точек (xi,yi). Найти координаты вершин одного из квадратов, из заданного множества точек. khariton Visual C++ 0 14.11.2013 09:36
Координаты на TImage animalshadow Общие вопросы C/C++ 2 09.04.2010 15:09