一个canvas很简单的问题 我在form1上画了一条直线用lineto()画的结果是如果窗口最小化后在打开就没有了怎么回事? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是在Form1.OnShow的时候写重绘代码 在窗口的onpaint事件中重新画一遍 如:nit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; id : boolean = false;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin form1.Canvas.Pen.Color := clred; form1.canvas.MoveTo(20,20); form1.Canvas.LineTo(40,40); id := true;end;procedure TForm1.FormPaint(Sender: TObject);begin if id then begin form1.Canvas.Pen.Color := clred; form1.canvas.MoveTo(20,20); form1.Canvas.LineTo(40,40); end;end;end. 需要在Form的OnPaint事件中写,否则就不能及时刷新 实际你在窗体上加一个image,然后再在上面画就不会出现类似的问题。 所画做成函数,在onpaint中调用 你不知道要重画什么,就将所画的东西保存下来!用一个数据结构比如说:struct line{ Point start; Point end;}以后找到它重画就行了 用一个TBitMap变量的Canvas一储存 在Bitmap.Canvas上画,在OnPaint事件中将其转到Form上! 当你最小化窗体打开时,系统会自动调用你的窗体重绘函数。如果没有自定义,则使用缺省函数。而在缺省函数中并没有你所需要的lineto()画直线,当然再打开窗体时先画的直线就没有了。上面大家讲的很清楚,自己试一下就知道了。 很急的一个调用oracle存储过程传出参数的问题,请大家帮忙. 在线等:请教如何禁止TWebBrowser的默认的右键菜单,改成自己的右键菜单? 开发USB HID设备的烦恼(100分求救) VC调用delphi编写的dll时传出参数的问题 年终奖就要发了。 各位先知,如何找到并装入TSimpleDataSet类? 求助,查找一份websnap资料 我想做一个类似于金山毒霸自动升级的功能,应该怎么做?来者有分 初学Delphi要怎么开始呢?望各位高手赐教! 关于Repeater控件模板的疑问 DLL调用问题,请大家帮帮我啊!! 如何判断一个字符串是否是常数
nit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
id : boolean = false;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Canvas.Pen.Color := clred;
form1.canvas.MoveTo(20,20);
form1.Canvas.LineTo(40,40);
id := true;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
if id then
begin
form1.Canvas.Pen.Color := clred;
form1.canvas.MoveTo(20,20);
form1.Canvas.LineTo(40,40);
end;
end;end.
struct line
{
Point start;
Point end;
}
以后找到它重画就行了
如果没有自定义,则使用缺省函数。而在缺省函数中并没有你所需要的lineto()画直线,
当然再打开窗体时先画的直线就没有了。上面大家讲的很清楚,自己试一下就知道了。