Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2011, 12:41   #1
Victor1963
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 31
По умолчанию Рисование мышкой

Я рисую фигуру мышью и хочу, чтобы фигура перемещалось по программе
Но получается, после запуска программы, могу нарисовать фигуру, а перемещение не происходит.

Код:
type
 TForm1=class(TForm)
.......
 procedure TForm1.Form1MouseDown(Sender:TObject; Button:TMouseButton;
Sfift:TShiftState; X,Y:Integer);
 begin
 Caption:=Format('Mouse in x=%d, y=%d',[x,y];
 if ssShift in Shift then
 Canvas.Pixels[x,y]:=clBlack;
 end;
procedure TForm1.Form1Paint(Sender:TObject);
var
 i:integer;
 m:integer;
 b:integer;
 c:integer;
begin
 for b:=0 to 50 do
begin
 for m:=0 to 656 do
begin
 for i:=1142 downto 0 do
  c:=Canvas.Pixels[i,m];
  if c=clBlack then
begin
 Canvas.Pixels[i+10,m]:=clBlack;
 Canvas.Pixels[i,m]:=clWhite;
end;
 end;
  end;
   end;
end.

Последний раз редактировалось JTG; 03.05.2011 в 13:49.
Victor1963 вне форума Ответить с цитированием
Старый 03.05.2011, 15:52   #2
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

Не совсем понял что нужно.
Но как вариант, проще перемещать image/paintbox (top,left) - нежели каждый раз перерисовывать.
Moonquake
phphel вне форума Ответить с цитированием
Старый 03.05.2011, 16:42   #3
Victor1963
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 31
По умолчанию

Спасибо большое, но могу я как-нибудь, нарисовав фыгуру мышкой, поместить это
в файл, потом разместить и открыть файл в програме, где перемещаю и орентирую
фигуру в пространстве и все это я делаю по пиксельно для опознавание фигуры.
Раньше прорисововал фигуру пикселями (прописовал кординаты) перемещал и все
работало. Потом решил рисовать мышкой тут и застрял. Могли-бы Вы показать риальный пример загрузки фигуры в файл и выгрузка его, или делая тоже самое в
mage/paintbox(top,left), только с использованием мышки. Я только осваиваю Delphi
именно для опознавания предметов. Буду примного вам благодарен.
Victor1963 вне форума Ответить с цитированием
Старый 03.05.2011, 17:16   #4
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

Вам нужно поместить в image рисунок, и получить возможность передвигать его по форме мышкой?
Moonquake
phphel вне форума Ответить с цитированием
Старый 03.05.2011, 17:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если примерно таким путем пойтить?:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var  fig:array of Tpoint; ax,ay:integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if tag=0 then SetLength(fig,1); tag:=1;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if tag=1 then Begin
  fig[high(fig)].X:=x;fig[high(fig)].y:=y;
  SetLength(fig,length(fig)+1);     
 end;              Repaint;     ax:=x;ay:=y;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 tag:=0;    Repaint; 
end;

procedure TForm1.FormPaint(Sender: TObject);
var sx,sy,i:integer;
begin                sx:=0;sy:=0;
 if tag=0 then begin sx:=ax;sy:=ay;end;
  for i:=low(fig) to high(fig)-1 do Canvas.LineTo(fig[i].X+sx,fig[i].y+sy);
end;

end.
Задумка ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2011, 09:28   #6
Victor1963
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 31
По умолчанию

Спасибо большое за совет, но фигуру орентирует в, плоскосте,сама программа,
тут показон упращенный вариант программы. Вопрос в том, что рисую фигуру мыш
кой, но не знаю как вставить этот рисунок в image или в дальнейшую программу.
Stilet пробовал вашу прог. ,но компилятор ругаеться на счет SetLength.
Victor1963 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции с мышкой zxcasds Общие вопросы Delphi 6 23.04.2011 14:18
Рисование мышкой Victor1963 Помощь студентам 2 19.04.2011 12:43
Рисование мышкой Victor1963 Помощь студентам 0 13.04.2011 19:28
Рисование мышкой vandrouny Win Api 1 03.10.2010 19:57
Перетаскивание мышкой Obey177 Общие вопросы Delphi 13 20.09.2010 11:10