一个canvas很简单的问题

zealothasu 2002-11-08 03:50:22
我在form1上画了一条直线
用lineto()画的
结果是如果窗口最小化后在打开就没有了
怎么回事?
...全文
16 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Venda 2002-11-14
  • 打赏
  • 举报
回复
当你最小化窗体打开时,系统会自动调用你的窗体重绘函数。
如果没有自定义,则使用缺省函数。

而在缺省函数中并没有你所需要的lineto()画直线,
当然再打开窗体时先画的直线就没有了。

上面大家讲的很清楚,自己试一下就知道了。

ehom 2002-11-14
  • 打赏
  • 举报
回复
在Bitmap.Canvas上画,在OnPaint事件中将其转到Form上!
maskii 2002-11-13
  • 打赏
  • 举报
回复
你不知道要重画什么,就将所画的东西保存下来!用一个数据结构比如说:
struct line
{
Point start;
Point end;
}
以后找到它重画就行了
ilikeff8 2002-11-13
  • 打赏
  • 举报
回复
所画做成函数,在onpaint中调用
2312 2002-11-13
  • 打赏
  • 举报
回复
实际你在窗体上加一个image,然后再在上面画就不会出现类似的问题。
CashChin 2002-11-13
  • 打赏
  • 举报
回复
用一个TBitMap变量的Canvas一储存
zealothasu 2002-11-11
  • 打赏
  • 举报
回复
问题是

我都不知道在窗体上画什么东西

怎么重画啊?
goease 2002-11-08
  • 打赏
  • 举报
回复
需要在Form的OnPaint事件中写,否则就不能及时刷新
otto_nuaa 2002-11-08
  • 打赏
  • 举报
回复
同意
lws0472 2002-11-08
  • 打赏
  • 举报
回复
在窗口的onpaint事件中重新画一遍 如:
nit Unit1;

interface

uses
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.
zealothasu 2002-11-08
  • 打赏
  • 举报
回复
怎么重绘啊
otto_nuaa 2002-11-08
  • 打赏
  • 举报
回复
就是在Form1.OnShow的时候写重绘代码
otto_nuaa 2002-11-08
  • 打赏
  • 举报
回复
在窗口刷新的时候在重绘一边

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧