![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
}0pa |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 75 Пол: Мужской Репутация: ![]() ![]() ![]() |
Проблема такова: В прикрепленном файле находятся файлы KRD-карты районов. Каждый из них содержит название района, координаты точек, макс. и мин. значения "х" и "у". Помогите вывести на экран хотя бы одну карту
Код interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; x,y,h:real; I1,I2,J1,J2:integer; x1,x2,y1,y2:real; implementation {$R *.dfm} {------------------------------------------------------------------------------} function II(x:real):Integer; begin II:=I1 + Trunc ((x-x1)*(I2-I1)/(x2-x1)) end; {------------------------------------------------------------------------------} function JJ(y:real):Integer; begin JJ:=J1 + Trunc ((y-y1)*(J2-J1)/(y2-y1)) end; {------------------------------------------------------------------------------} procedure TForm1.Button1Click(Sender: TObject); begin with Image1 end; end. Прикрепленные файлы ![]() -------------------- Ну, а почему бы в свободное время не позаниматься программированием?
|
![]() ![]() |
hiv |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Вроде что-то получилось
![]() ![]() Вот как выглядит: ![]() ЗЫ: Если хочешь несколько районов, то используй массив из TRegion. Но не забудь, что пересчитывать Delta (относительное смещение координат карты и формы на экране) придется для каждого региона по другому. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
}0pa |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 75 Пол: Мужской Репутация: ![]() ![]() ![]() |
Но не забудь, что пересчитывать Delta (относительное смещение координат карты и формы на экране) придется для каждого региона по другому. 1.Наверное, придется заносить сещение в массив? 2.К тому же, нужно нарисовать карту региона,т.е.этот район не обязательно должен находиться в левом углу формы? 3.А нельзя ли не изменять в файле имя района и райцентра, вывести на экран при считывания из файла, эти имена в норм. "русской форме"? -------------------- Ну, а почему бы в свободное время не позаниматься программированием?
|
hiv |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
1.Наверное, придется заносить сещение в массив? 2.К тому же, нужно нарисовать карту региона,т.е.этот район не обязательно должен находиться в левом углу формы? 3.А нельзя ли не изменять в файле имя района и райцентра, вывести на экран при считывания из файла, эти имена в норм. "русской форме"? 1. Смещение находится в объекте, поэтому заносить его в массив не надо, т.к. сами объекты уже в массиве. Возможно нужно убрать смещение из регионов, если они у тебя относительно друг друга правильно расположены, и ввести общее смещение. Его вычислять как минимальное значение из Region[i].Rect.Left по X и минимальное значение из Region[i].Rect.Top по Y. 2. см. ответ на вопрос 1. 3. Можно, тогда ищи функцию перекодировки cp866 в кодировку cp1251. На форуме точно есть. Начни с FAQ ![]() -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 11:12 |