因为需要在窗体上画图,而且只在初始后画一次的图形用哪个事件可以满足这个要求?
试过了
OnActivate
OnShow
OnCreate
都不可以
而OnPaint是可以的,但是每次窗体被重画的话,这个都需要调用吧,那就不能满足只在初始后重画的要求了
如果做个计数在onpaint里面inc一下,判断是否<=1,这样可以是可以,但是也太麻烦了吧有哪个事件可以只见满足这个要求的?
试过了
OnActivate
OnShow
OnCreate
都不可以
而OnPaint是可以的,但是每次窗体被重画的话,这个都需要调用吧,那就不能满足只在初始后重画的要求了
如果做个计数在onpaint里面inc一下,判断是否<=1,这样可以是可以,但是也太麻烦了吧有哪个事件可以只见满足这个要求的?
解决方案 »
- 一个有关显示的问题
- 讨论关于delphi版本的问题!
- 高分求教大量数据插入到数据库的速度慢的问题
- 谁有安易R9购销连的源代码?我可以出钱的
- 我是新手,软件的注册算法这一过程如何写?
- 找资料
- DCOM服务器读取注册表信息的问题?
- 关于记录文件的问题
- 怎么这个控件找不到阿
- 各位,请不要怪我乱发贴,我只是做一个民意调查:有多少人是包月上网的,请进来up一下?(我就是包月上网的120RMB/M,现在我不知道合不合算)????
- 谁用过indy的pop3和smtp组件?接收后的附件居然多了个0
- (█(█(█(█在线程中用了while,陷入死循环,其他任务不能同步处理--然后加入Application.ProcessMessages,所有任务都同步处理了,但CPU全
如果是第一次调用OnPaint就执行你的代码
我之前写到的的就是你说的办法,是太麻烦了吧而且有一个比较厉害的问题,就是如果在这个时候画的话,若同时要画窗体上的其他的Image之类的。好像因为还没完全加载完,这时候画,画出的颜色不是指定的颜色而是默认的空白色尝试过Image换其他颜色(.Pen.Color)来指定着去画,但是只能画出白色
From在OnShow时,Image根本还没Show,这时候东西画不到Image上(画了,但窗体完全Show出来之后,Image上没有画的效果)
至于有没有这样一个事件我不知道.
明天晚上如果这个问题还没解决,请短消息联系我,回家休息了:)
这个时候Form都在OnShow,上面的控件都还没有Show,所以这个时候画不上去
画了,但窗体完全Show出来之后,Image上没有画的效果我前面都提到这个好多次了
OnCreate
OnShow
OnActivate
OnPaint
很奇怪的,TForm没有OnEnter?OnActivate及其之前的东西,因为在OnPaint之前,根本不能用来用于作画
但是OnPaint又有这样的问题,所以啊...
OnCreate的时候,窗体根本都还没画出来,怎么在没有画出来的东西上作画?
Forms, Dialogs,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Show;
{
在这里写你‘画画’的代码
}
Application.Run;
end.
单单刷新是没用的
refresh
repaint
都试过的CareYouOnly
看上去可行,试试看
同样的问题,只能够画出白色的背景色问题已经解决,用CareYouOnly和我一开始说过在Repaint中做计数器的方法,
都可以实现画出东西,但是画出的东西只是白色背景色
需要画之前,Repaint或者Refresh一次窗体,之后再画,就是正确的颜色但是都有相当大的缺陷,计数器的方法的话,需要一个静态或者全局变量
在project内做的话,因为project uses的库实在太少,稍作复杂的画,许多库要全部重新加入来,感觉做也是相当的不漂亮还有更好的办法么?
也感谢wozhuchuanwei的一些些提示在
OnCreate
OnShow
OnActivate
OnPaint
顺序的这样4个当中使用OnShow之后产生的OnActivate事件,用OnCreate和OnShow是不行的!!在其中加入画画的代码,不过,之前一定要加上
procedure TfrmMain.FormActivate(Sender: TObject);
begin
Form1.Repaint;//或者Form1.Refresh
//画画的代码
end;这样projects文件就不需要修改了,而且多余的代码也就一行而已
怎么不行呢,我用下面的代码尝试了一下,可以看到效果啊program Project1;uses
Forms, Graphics,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Show;
with Form1 do
begin
Img.Canvas.Pen.Color:=clRed;
Img.Canvas.Brush.Style:=bsClear;
Img.Canvas.Rectangle(0,0,Img.Width,Img.Height);//看见一个红色的长方形啊
end;
Application.Run;
end.
这句的作用是什么?我没用这句直接画的