如何使圆弧只显示一个区域中的部分. 我在画布上绘图,现在要求只绘制区域Rect(10,10,500,500)中的内容,该如何做好?有橡皮筋的效果.鼠标可能移到区域外 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样的:做一个绘图工具,绘图区域只占整个窗体的一部分(在窗体的canvas上绘图)用户可以在窗体上用鼠标绘图,鼠标可以在整个窗体上移动,但是只显示在绘图区域部分的内容. TCavas.ClipRect照这个方向去考虑应该可以解决 呵呵,写了个例子var Form1: TForm1; ptStart: TPoint; b_mousedown: Boolean = false; PreRect: TRect; rgn: HRGN;implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);begin Canvas.Brush.Color := clWhite; Canvas.Rectangle(100,100,300,300);end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin b_mousedown := true; ptStart.X := X; ptStart.Y := Y;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if b_mousedown then begin SelectClipRgn(Canvas.Handle, rgn); Canvas.Pen.Color := clWhite; Canvas.Ellipse(PreRect); Canvas.Pen.Color := clBlue; Canvas.Pen.Style := psDot; Canvas.Ellipse(ptStart.X, ptStart.Y, X, Y); PreRect.TopLeft := ptStart; PreRect.BottomRight.X := X; PreRect.BottomRight.Y := Y; end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin b_mousedown := false;end;procedure TForm1.FormCreate(Sender: TObject);begin rgn := CreateRectRgn(100,100,300,300);end;end. 谢谢大家,谢谢killlaoli(菜鸟)就是这个方法可以解决. 鄙视Delphi中国代理商 delphi编程求救 高分请教关于freeMem的问题。 谁用过bsSkinComboBox这个控件????????????????? seek函数seek(0,2)什么意思? delphi软件原代码下载 谁有详细设计说明书的例子? 有谁用过USB接口控制函数?有没有这方面的资料或控件? 一个很简单的问题 DLL调用出错的问题?结束主程序时非法操作! 帮忙!!! 没事闲的
用户可以在窗体上用鼠标绘图,鼠标可以在整个窗体上移动,
但是只显示在绘图区域部分的内容.
照这个方向去考虑应该可以解决
var
Form1: TForm1;
ptStart: TPoint;
b_mousedown: Boolean = false;
PreRect: TRect;
rgn: HRGN;
implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color := clWhite;
Canvas.Rectangle(100,100,300,300);
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
b_mousedown := true;
ptStart.X := X;
ptStart.Y := Y;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if b_mousedown then
begin
SelectClipRgn(Canvas.Handle, rgn);
Canvas.Pen.Color := clWhite;
Canvas.Ellipse(PreRect);
Canvas.Pen.Color := clBlue;
Canvas.Pen.Style := psDot;
Canvas.Ellipse(ptStart.X, ptStart.Y, X, Y);
PreRect.TopLeft := ptStart;
PreRect.BottomRight.X := X;
PreRect.BottomRight.Y := Y;
end;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
b_mousedown := false;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
rgn := CreateRectRgn(100,100,300,300);
end;end.
就是这个方法可以解决.