画完橡皮筋,如何才能不影响背景?(100分)

  • 主题发起人 主题发起人 小树流
  • 开始时间 开始时间

小树流

Unregistered / Unconfirmed
GUEST, unregistred user!
如题
procedure TEditFrame.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited;
RectP1.x := X;
RectP1.y := Y;
RectP2 := RectP1;
Canvas.Pen.Mode := pmNotXor;
Canvas.pen.Style := psDot;
Canvas.Pen.Color := clBlack;
Canvas.Brush.style := bsClear;
end;
procedure TEditFrame.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited;
if ssLeft in Shift then
begin
Canvas.Rectangle(RectP1.x, RectP1.y, RectP2.x, RectP2.y);
Canvas.Rectangle(RectP1.x, RectP1.y, X, Y);
RectP2.x := X;
RectP2.y := Y;
end;
end;

procedure TEditFrame.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited;
Canvas.Rectangle(RectP1.x, RectP1.y, RectP2.x, RectP2.y);
end;

总是会影响背景,有什么方法可以不影响呢?
我不想用drawfocusrect
 
用异或方式画
可惜当矩形成一直线时什么都看不到了
 
能讲明白一点吗?
我用CustomControl,在paint里只画了一个矩形,没有设color。是白色的
用xor也有影响啊,怎么办?
Canvas.Pen.Mode := pmXor;
Canvas.pen.Style := psDot;
Canvas.Pen.Color := clWhite;
Canvas.Brush.Style := bsClear;
 
就是pmNotXor方式
我画的没有问题呀
就是用鼠标在窗口上拉一个矩形不是?
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.Pen.Mode := pmNotXor;
Canvas.Brush.style := bsClear;
m_x0:=X;
m_y0:=Y;
m_x1:=X;
m_y1:=y;
Canvas.Rectangle(m_x0,m_y0,m_x1,m_y1);
c_m:=not c_m;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not c_m then exit;
Canvas.Rectangle(m_x0,m_y0,m_x1,m_y1);
m_x1:=X;
m_y1:=Y;
Canvas.Rectangle(m_x0,m_y0,m_x1,m_y1);
end;
 
拉框没问题,但在我的程序里会涉及到其它颜色,可能会对paint有影响,也可能对
其它部分有影响。我想把mousedown时设置的一些值恢复成原来的,这样就不会影响
其它过程。可不知道怎么设回,或是有更好的办法来画?
 
你在这里面用到的不外是mode,style,color
你把他们保存起来不久可以了吗??
或者在重新定义一个canvas,画框就用新定义的canvas
 

Similar threads

后退
顶部