下面的代码可以实现橡皮擦的功能?MovePt可用来记录鼠标当前位置?是一个变量?
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);beginif Drawing thenbeginDrawShape(Origin, MovePt, pmNotXor);MovePt := Point(X, Y);DrawShape(Origin, MovePt, pmNotXor);end; MovePt用来记录鼠标当前位置。当下次鼠标移动时, 就能在上次鼠标绘制的图形上画一个形状、大小一样的图形,并把画笔颜色设置成PmNotXor,使上次绘制的图形颜色变成了屏幕颜色,从而达到“橡皮擦”的效果。Style属性设置成用户希望的值,可实现对画笔和画刷风格的选择。
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);beginif Drawing thenbeginDrawShape(Origin, MovePt, pmNotXor);MovePt := Point(X, Y);DrawShape(Origin, MovePt, pmNotXor);end; MovePt用来记录鼠标当前位置。当下次鼠标移动时, 就能在上次鼠标绘制的图形上画一个形状、大小一样的图形,并把画笔颜色设置成PmNotXor,使上次绘制的图形颜色变成了屏幕颜色,从而达到“橡皮擦”的效果。Style属性设置成用户希望的值,可实现对画笔和画刷风格的选择。
Pen.Mode := pmCopy;
Brush.Style:= bsClear;
Brush.Color:=clWhite;
试试
先在上次的地方画,然后移动到新坐标再画新图形
IMAGE1.Canvas.FillRect(ret);//橡皮擦ret是TRECT类型