|
前几日在用Delphi编程时,写了这样一段程序,如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Canvas.MoveTo(10,10);
Canvas.LineTo(100,100);
end;
运行以后,一切正常,没有任何出错信息。可就是没见线出来。怎么会呢?后来,经过翻阅一些资料和几天下来的实践,我终于找到了病根所在,
原来, Form 的 Canvas 不会自动重绘,我们可以编个小程序来验证一下,建立一个按钮,把上述程序写入它的OnClick事件中,
执行时用鼠标点它一下, 好了, 线段画出来了, 这时候将窗口最小化,再还原为原大小,如何, 线段不见了!其实,解决的方法是只要把它写在OnPaint事件中就可以了,如下:
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.MoveTo(10,10);
Canvas.LineTo(100,100);
end;
另外,在划线时,我们还应该注意划线的位置是不是被其他的控件挡住,划线时,Canvas.Pen的各项属性是否正确,如画笔的色彩不要与背景色相同等等,像下列的程序,
视觉上就看不到这条线。
procedure
TForm1.Button1Click(Sender: TObject);
begin
Form1.Canvas.Pen.Style := psClear;
Form1.Canvas.MoveTo(0, 0);
Form1.Canvas.LineTo(10, 10);
end;
总之,在我们编程的过程中,类似的错误可能还有很多,因此,都需要对每一个程序进行反复的调试和运行,才能达到最理想的效果。
(上海市杨浦区国和二村83号402室 严晓博 200438)
|