Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
我在Win95 下用 Delphi 寫程式.想要劃一條線, 於是
procedure TForm1.FormCreate(Sender: TObject); begin Canvas.MoveTo(10,10); Canvas.LineTo(100,100); end;
compile run 沒問題, 但是卻沒有線出現啊?? 為什麼?
問題與 Win95 沒有關係, 請把這段程式寫在 OnPaint 事件中, 就可以看到這條線,
例: procedure TForm1.FormPaint(Sender: TObject); begin Canvas.MoveTo(10,10); Canvas.LineTo(100,100); end;
原因是 Form 的 Canvas 不會自動重繪(redraw, TImage則會), 要證明這點也不難: 請將上述的 FormPaint 刪除, 改寫在一個按鈕的 OnClick 事件中, 執行時以滑鼠點它一下, 好了, 線段畫出來了, 這時候將視窗極小化,再還原為原大小, 如何, 線段不見了
我這個人比較囉唆, 一併 post 我以前遇過的狀況給您參考:
![]() |
畫線的位置, 是不是被其他的物件檔住, 例如 TPanel |
![]() |
畫線的當時, Canvas.Pen 的各項屬性是否正確, 像是畫筆的色彩(不要與背景色相同)與樣式等等,像是下列的程式,
視覺上就看不到這條線
procedure TForm1.Button1Click(Sender: TObject); begin Form1.Canvas.Pen.Style := psClear; Form1.Canvas.MoveTo(0, 0); Form1.Canvas.LineTo(10, 10); end; |
![]() |
MoveTo() 與 LineTo 之前是不是有錯誤(Except)發生, 以致直接執行 Try...Finally 或 Try...Except 的錯 誤處理部分, MoveTo() 與 LineTo() 並沒有執行到. |
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |