Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Надоел ящик с песком. Помогите!   Найти похожие ветки 

 
иван61   (2002-08-04 13:06) [0]

Кто служил в армии знает, что тактические задачи отрабатываются сначала на макете местности, т.е. своеобразном ящике с песком. Друзья-военные просят написать прогу чтобы моделирование боя можно было делать на ПК. В своей проге на форму бросаю Image, загружаю в неё карту местности, как быть дальше - не знаю. Необходимо чтобы по клику мышки на карте создавались тактические знаки. Это не сложно. Но ещё необходимо их как-то и убирать с карты. Кроме того при прокручивании карты они тоже должны перемещаться. Как реализовать такую задумку? Может кто-либо делал что подобное? Заранее спасибо.


 
Rous   (2002-08-04 13:11) [1]

Очень просто. Я делал редактор шахмат для отца (он статьи в журнал с картинками пишет). По щелчку вычисляешь координаты мышки и на ее месте создаешь TImage с картинкой, заранее все TImage ы сохраняй в массиве для простоты - с перемещением думаю сам додумаешь.


 
Юрий Зотов ©   (2002-08-04 13:23) [2]

А для прокрутки можно, например, поместить все это в TScrollBox.


 
Rous   (2002-08-04 13:36) [3]

Кстати действительно, почему сам не додумался?


 
иван61   (2002-08-04 14:27) [4]

Делаю так:

unit UKarta;

interface

uses
Windows, Messages, jpeg, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;

type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
ScrollBarHor: TScrollBar;
ScrollBarVert: TScrollBar;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure ScrollBarHorChange(Sender: TObject);
procedure ScrollBarVertChange(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.BorderStyle:=bsSingle;
Panel1.Left:=0;
Panel1.Top:=0;
Image1.Picture.LoadFromFile("C:\Delphi5\Projects\NewKarta\Karta.jpg");
Image1.Left:=0;
Image1.Top:=0;
Image1.AutoSize:=true;
Panel1.Width:=800;
Panel1.Height:=500;
ScrollBarHor.Min:=0;
ScrollBarVert.Min:=0;
ScrollBarHor.Max:=Image1.Picture.Width-Panel1.Width;
ScrollBarVert.Max:=Image1.Picture.Height-Panel1.Height;
SpeedButton1.AllowAllUp:=true;
SpeedButton1.GroupIndex:=1;
end;

procedure TForm1.ScrollBarHorChange(Sender: TObject);
begin
Image1.Left:=-ScrollBarHor.Position;
end;


procedure TForm1.ScrollBarVertChange(Sender: TObject);
begin
Image1.Top:=-ScrollBarVert.Position;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var z:TPanel;
begin
if SpeedButton1.Down=true then
if Button=mbLeft then
begin
z:=TPanel.create(Form1);// создаем экземпляр компонента
z.parent:=self;// появится на форме
z.left:=(x-ScrollBarHor.Position);
z.top:=(y-ScrollBarVert.Position);
z.Width:=70;
z.Height:=15;
end;
end;

end.


Но вот только в позицию курсора могу вставить только панель, а картинку с рисунком сообразить не могу. Подскажите.


 
Юрий Зотов ©   (2002-08-04 15:30) [5]

Пример - ScrollBox со вставкой и прокруткой картинок. Проверено.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
procedure ScrollBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ScrollBox1Click(Sender: TObject);
var
P: TPoint;
begin
GetCursorPos(P);
P := ScrollBox1.ScreenToClient(P);
with TImage.Create(Self) do
begin
Parent := ScrollBox1;
Picture.LoadFromFile("...");
SetBounds(P.X, P.Y, Picture.Width, Picture.Height)
end
end;

end.


 
vserd   (2002-08-08 14:23) [6]

Ну на самом деле, мое имхо, Image тебе слабо поможет.
1. Карты скорей всего будут цифровом ввиде (у которых свой формат). Найди компонент который будет отрисовывать эти карты.
2. Для нормальной работы с программой необходимо будет создать свой движок, который буде отрабатывать перерисовку, добавление и удаление знаков, и других символов. (т.е. работа со слоями)

3. Наверняка у военных есть какой нибудь институт, который решает такую проблему, тока она засекреченная :))


 
Kudatsky   (2002-08-08 17:07) [7]

Посмотри на сайте
http://webua.net/usep
Там программа для энергетики, но идеи
можно заимствовать


 
Леон   (2002-08-08 19:34) [8]

Есть готовые компоненты для подобных вещей:
http://www.cartoworld.com - eng
http://www.vkasoft.narod.ru - rus



Страницы: 1 вся ветка

Текущий архив: 2002.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-60556
pvasya
2002-08-07 16:29
2002.08.19
TForm


4-60926
Dr. Web
2002-06-11 14:34
2002.08.19
Icons for MDIChild


1-60631
Лысый
2002-08-08 19:01
2002.08.19
Настройки


1-60721
maxim2
2002-08-07 07:23
2002.08.19
Как сгенерить случайную цифру например от 10 до 100 ?


14-60837
Ajax
2002-07-23 21:56
2002.08.19
hoha.ru