|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.01.2018, 18:37 | #1 |
Новичок
Джуниор
Регистрация: 25.01.2018
Сообщений: 1
|
Проблема с определением координат
Ребята всем привет, проблема встала боком не могу догадаться что делать у я сделал карту на компоненте scrollbox наложен компонент image сделал не профиксенный зум с помощью стрелок вверх и вниз (увеличить уменьшить), и при уменьшении image координаты сбиваются, подскажите как решить эту программу на скринах думаю видно более подробно так же вкладываю код программы, чуть не забыл при уменьшении на один клик координата по X смещается на 6, а по координате Y на 3 примерно. КАК СДЕЛАТЬ ЧТОБЫ ПРИ УМЕНЬШЕНИИ КАРТИНКИ КООРДИНАТЫ НЕ СБИВАЛИСЬ? там в программе я еще строю красный прямоугольник по координатам он строиться все хорошо при любом масштабе а тут капец не понимаю ....
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls; type TForm1 = class(TForm) ScrollBox1: TScrollBox; Image1: TImage; TrackBar1: TTrackBar; Button1: TButton; Label1: TLabel; procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TrackBar1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); procedure Image1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; oldpos,karpos:Tpoint; capture:Boolean; key:char; implementation {$R *.dfm} procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbleft then begin capture:=true; oldpos.x:=x; oldpos.Y:=y; end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if capture then with(sender as Timage) do begin left:=left+x-oldpos.X; top:=top+y-oldpos.Y; end; Label1.Caption:='X='+inttostr(x)+'Y ='+inttostr(y); end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin capture:=false; if (x>700)and(x<1200)and(y>990)and(y<1 860)then ShowMessage('Попал!'); end; procedure TForm1.TrackBar1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin keypreview:=true; if key=40 then begin form1.Image1.Width:=form1.Image1.Wi dth-100; form1.Image1.Height:=form1.Image1.H eight-100; end; if key=38 then begin form1.Image1.Width:=form1.Image1.Wi dth+100; form1.Image1.Height:=form1.Image1.H eight+100; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Image1.Picture.LoadFromFile('1.bmp' ); end; procedure TForm1.Image1DblClick(Sender: TObject); begin image1.Canvas.Pen.Color:=clred; image1.Canvas.Brush.Style:=bsclear; image1.Canvas.Rectangle(700,990,120 0,1860); end; end. |
25.01.2018, 23:16 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Это как надо ненавидеть людей, чтобы показывать им такое?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
26.01.2018, 09:30 | #3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
различать
1. координаты карты(географические) 2. координаты текущей точки ИЗОБРАЖЕНИЯ карты/ 3. координаты текущей точки экрана дисплея и делать преобразования(пересчет). и сказать наконец какие из перечисленных выше координат сбиваются и когда (при каких действиях). Цитата:
Нет. Значит будет(и есть) НЕПРОПОРЦИОНАЛЬНОЕ изменение масштаба (растяжение/ сжатие изображения по горизонтали/вертикали).
программа — запись алгоритма на языке понятном транслятору
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с определением пути bat-ником | Fakov | Помощь студентам | 6 | 05.02.2013 14:27 |
Проблема с определением кодировки | ZePr | Общие вопросы Delphi | 8 | 08.01.2012 15:03 |
Прошу помочь с определением координат курсора на форме. | Dem.IG | Помощь студентам | 1 | 17.12.2009 16:00 |
Проблема с определением строки в макросе | Евгений(mE) | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 17.11.2008 11:40 |
проблема с определением внешнего ключа! | veter_s_morya | SQL, базы данных | 1 | 26.06.2008 18:37 |