var
bIsDrawing : boolean;
iOldX, iOldY : integer;
iStartX,iStartY : integer;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bIsDrawing := True;
iStartX := x;
iStartY := y;
iOldX := x;
iOldY := y;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if bIsDrawing then
begin
with Image1.Canvas do
begin Pen.Mode := pmXor;
brush.Color := clred; Rectangle (Rect(iStartX,iStartY,iOldX,iOldY));
Rectangle (Rect(iStartX,iStartY,x,y));
iOldX := x;
iOldY := y;
end;
end;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bIsdrawing := false;
end;
老板来了,没做完,但也差不多了,你的把Rectangle()换成Polyline或者自己写个画巨型的寒数!
记着将pen的模式设回去!
bIsDrawing : boolean;
iOldX, iOldY : integer;
iStartX,iStartY : integer;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bIsDrawing := True;
iStartX := x;
iStartY := y;
iOldX := x;
iOldY := y;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if bIsDrawing then
begin
with Image1.Canvas do
begin Pen.Mode := pmXor;
brush.Color := clred; Rectangle (Rect(iStartX,iStartY,iOldX,iOldY));
Rectangle (Rect(iStartX,iStartY,x,y));
iOldX := x;
iOldY := y;
end;
end;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bIsdrawing := false;
end;
老板来了,没做完,但也差不多了,你的把Rectangle()换成Polyline或者自己写个画巨型的寒数!
记着将pen的模式设回去!
http://www.truevcl.com
1、画图的位置与鼠标的位置不对应,我用ClientToScreen了还不行
2、画出的矩形框会把原来的图像掩盖了,不知是否Canvas.Mode设置出了问题?
用来凑数的,你应该自己写个用线画巨型的函数,
因为rectangle()是会用brush填充巨型的!
不行了,对不住了,不能多说了!