20.09.2017, 08:51
|
Прохожий
|
|
Регистрация: 19.09.2017
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
|
|
Распознавание цвета пикселя на картинке и перемещение объекта по форме
Есть две процедуры - это распознавание цвета пикселя на картинке и перемещение объекта по форме. Как прописать что бы распознавание цвета начиналось только после начала перемещения объекта и координаты XY брались с него же? То есть, я выделяю объект начинаю его перемещать и пока зажата левая кнопка мыши, цвет пикселя распознается.
Вот код:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Label1: TLabel;
Shape1: TShape;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
col: TColor;
Flag: boolean;
X0,Y0: integer;
implementation
{$R *.dfm}
//----------------------------------------------------------------------
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
col := Image1.Picture.Bitmap.Canvas.Pixels[x,y];
label1.Caption:= IntToStr(col);
Shape1.Brush.Color:= col;
end;
//----------------------------------------------------------------------
//----------------------------------------------------------------------
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Flag := Button = mbLeft;
if Flag then
begin
x0 := x;
y0 := y
end;
end;
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Flag then
with TControl(Sender) do begin
Left := Left + x - x0;
Top := Top + y - y0;
end;
end;
procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Flag := false
end;
//------------------------------------------------------------------------
end.
lmikle: пользуемся тегами.
|