IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Нарисовать карту
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Проблема такова: В прикрепленном файле находятся файлы 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.


Прикрепленные файлы
Прикрепленный файл  KRD.rar ( 17.13 килобайт ) Кол-во скачиваний: 241


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
3 страниц V < 1 2 3 >  
 Ответить  Открыть новую тему 
Ответов(20 - 39)
сообщение
Сообщение #21


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 27.11.2006 20:00) *

Не могу найти в инете ничего стоящего, Возможно это АПИ фукнции, а с ними я еще не сталкивался...
Код
CharToOEM/OEMToChar

Может что-нибудь это? Тогда что за тим PAnsiChar???

Смотри DRKB (советую загрузить)
function StrToOem(const AnsiStr: string): string; 
begin
SetLength(result, Length(AnsiStr));
if Length(result) > 0 then
CharToOem(PChar(AnsiStr), PChar(result))
end;

Здесь win->dos , а наоборот сам переделаешь smile.gif
Удачи.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Большое Вам спасибо, что потратили время на эту задачу...Вроде все сделано.
ЗЫ: Что такое DRKB?


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 28.11.2006 20:52) *

ЗЫ: Что такое DRKB?

Ну ты даешь!!! lol.gif Смотри заголовок...


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Тьфу,ты... mega_chok.gif mega_chok.gif mega_chok.gif
Кстати,
Код
Attr:=$FFFFFFFF - faDirectory;

Означает, все файлы в текущей директории??? wink.gif


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 29.11.2006 19:17) *
Кстати,
Код
Attr:=$FFFFFFFF - faDirectory;

Означает, все файлы в текущей директории??? wink.gif

Абсолютно верно. Причем faAnyFile не хляет, вместо него $FFFFFFFF. А не хляет потому, что мелкософтовцы в винде повводили еще новых атрибутов - да еще и в инвертированом виде. mega_chok.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Код
    { if i=1 then
     begin //относительное смещение координат карты и формы на экране
       dX:=Region[i].Rect.Left;
       dY:=Region[i].Rect.Top;
     end
     else
     begin //выбираем минимальные значения
       if dX>Region[i].Rect.Left then dX:=Region[i].Rect.Left;
       if dY>Region[i].Rect.Top then dY:=Region[i].Rect.Top;
     end;  }

Я сомневаюсь,что эта часть кода жизненно необходима good.gif Да, к тому же зачем вообще рисовать прямоугольник? wink.gif


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 1.12.2006 1:08) *
Я сомневаюсь,что эта часть кода жизненно необходима good.gif

Необходима, если карты будут другие. Тогда смещения dx и dy, которые ты константами прописываешь в своей программе, прийдется менять, что повлечет перекомпиляцию кода. Тем более, что в этом коде используются все входные данные. Иначе зачем они тебе давались? Вспомни школьную физику или математику: "При решении задачи используются все данные, которые даны в условии, иначе задача решена НЕПРАВИЛЬНО!".
Цитата(}0pa @ 1.12.2006 1:08) *
Да, к тому же зачем вообще рисовать прямоугольник? wink.gif

Где ты видел рисование? blink.gif TRect - просто стандартный объект, содержащий только координаты прямоугольной области.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Случилось самое страшное mad.gif . Мне нужно организовать, чтобы карта рисовалась точно в области формы и при иземенения размера формы менялся ее размер nea.gif


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 1.12.2006 16:44) *

Случилось самое страшное mad.gif . Мне нужно организовать, чтобы карта рисовалась точно в области формы и при иземенения размера формы менялся ее размер nea.gif

Тогда масштаб должен быть вещественным. Целочисленное деление DIV должно быть заменено вещественным /. Результируемые координаты должны быть округлены до целого.
И тот кусок кода что выкинул - верни и доработай, чтоб масштаб вычислять. yes2.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #30


Гость






Нужно связать переменную m, отвечающую за масштаб с длиной и шириной формы, но другое дело, как это сделать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #31


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Цитата
Тогда масштаб должен быть вещественным. Целочисленное деление DIV должно быть заменено вещественным /. Результируемые координаты должны быть округлены до целого.

А это я сделал, тем самым уменьшив шаг масштаба... good.gif


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #32


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Еще требуется обратиться к каждому региону нажатием Левой кнопки мыши
Вот не пойму как можно это сделать7 mega_chok.gif


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #33


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(}0pa @ 4.12.2006 14:06) *

Еще требуется обратиться к каждому региону нажатием Левой кнопки мыши
Вот не пойму как можно это сделать7 mega_chok.gif

Что значит обратиться? (поподробнее)

ЗЫ: Пересчитывай координаты мышки обратно в координаты карты, т.е. умножай на масштаб и добавляй смещение. Делать это по событию onMouseDown.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #34


Пионер
**

Группа: Пользователи
Сообщений: 75
Пол: Мужской

Репутация: -  0  +


Обратиться. При нажатии на отдельный регион, появляется новая форма с этим регионом, но при этом этот регион в точности имеет размер формы и при Resize карта менят размеры.


--------------------
Ну, а почему бы в свободное время не позаниматься программированием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #35


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Главная проблема в определении принадлежности точки многоугольнику. Ее решение можешь посмотреть здесь.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #36


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Необходимо в этой же задаче: Дан рисунок, необходимо, создавая динмаически очередной ТАКОЙ же рисунок,
разместить его в точке, где находится Райцентр. Вот мой вариант, но что-то не получается...Не отображается копия. Помогите плзю
Код

       Image:=TImage.Create(Form1);
       BitMap:=TBitMap.Create;
       Myimage.width:=image1.width;
       Myimage.height:=image1.height;
       MyRect:=Rect(1,1,myImage.Width,myimage.Height);
       ImRect:=Rect(1,1,image1.Width,image1.Height);

        BitMap.Assign(Image1.Picture);

       MyImage.Canvas.CopyRect(MyRect,BitMap.Canvas,ImRect);

       Myimage.Left:=Round((Region[15].CenterX-dx-th div 2 - 1)/ m);
       Myimage.Top:= Round((Region[15].CenterY-dy-th div 2 - 1)/ m);
       MyImage.show;


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #37


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


А как же связать масштаб с габаритами формы? Чтобы при изменении размера формы, карта была в точности размером формы? mega_chok.gif


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #38


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(NTL @ 8.12.2006 2:14) *

А как же связать масштаб с габаритами формы? Чтобы при изменении размера формы, карта была в точности размером формы? mega_chok.gif

Очень просто:
1) Определяешь масштаб горизонтальный = размер региона по горизонтали / ширину формы;
2) Определяешь масштаб вертикальный = размер региона по вертикали / высоту формы;
3) Выбираешь из этих двух масштабов выбираешь максимальный.

ЗЫ: А причем тут растровая графика TImage? Ведь все время работали с векторной графикой! !4.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #39


Фанат Delphi
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Цитата(hiv @ 8.12.2006 9:09) *

ЗЫ: А причем тут растровая графика TImage? Ведь все время работали с векторной графикой! !4.gif

Поподробнее не могли бы... give_rose.gif


--------------------
ICQ (384-043-857)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #40


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(NTL @ 7.12.2006 18:26) *

Необходимо в этой же задаче: Дан рисунок, необходимо, создавая динмаически очередной ТАКОЙ же рисунок,
разместить его в точке, где находится Райцентр. Вот мой вариант, но что-то не получается...Не отображается копия. Помогите плзю

Нет! Это Вы поподробней: dry.gif
1) Что за рисунок? Изображение региона мы сами рисуем по его координатам (это векторная графика)
2) Что значит разместить рисунок в точке? Это что - ужать его до такого состояния? Стандартные рисунки TImage (растровая графика) отображаются не в точке, а в прямоугольнике (который можно задавать типом TRect).
3) А где должна отображаться копия НЕИЗВЕСНОГО ТАКОГО ЖЕ рисунка?


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

3 страниц V < 1 2 3 >
 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 3:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name