Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизНадоел ящик с песком. Помогите! Найти похожие ветки
← →
иван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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c