|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Распознавание цвета пикселя на картинке и перемещение объекта по форме
Есть две процедуры - это распознавание цвета пикселя на картинке и перемещение объекта по форме. Как прописать что бы распознавание цвета начиналось только после начала перемещения объекта и координаты 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: пользуемся тегами. Последний раз редактировалось lmikle, 20.09.2017 в 17:44. |