問題:我在Panel1中創建了一個groupbox,然后對groupbox的canvas繪圖。結果繪制的圖形怎么也顯示不出來。。如果我在繪圖前進行canvas.unlock 繪制完成之后進行 canvas.lock。結果我繪制的圖形是顯示出來了,但是其他的控制元件什么的都無法正常顯示了。這是為啥呢?
uj5u.com熱心網友回復:
果然要沉了。誰來接水。快點啊uj5u.com熱心網友回復:
這種干嘛不上代碼呢?你這么描述想要人家來猜測你哪里出問題了么?建議你看看uj5u.com熱心網友回復:
你搞反了,應該:canvas.lock;
// 繪圖
canvas.unlock;
uj5u.com熱心網友回復:
沒有反的,就算按照你說的,也是不行的。我已經試過了。不過也沒關系。我本來打算在一個Groupbox內手動繪制一個柱狀圖,后來感覺不行。干脆用TChart控制元件,方便了。
uj5u.com熱心網友回復:
GroupBox自己也會繪制,你的繪制應該在GroupBox控制元件本身繪制之后才可以。你把繪制代碼挪動一下位置看看,或者多載GroupBox的繪制程序。
uj5u.com熱心網友回復:
這事得寫一個自己的groupbox,繼承groupbox,然后override paint方法,需要傳遞的引數寫成這個groupbox的一些屬性或方法。其他做法都不是合乎delphi邏輯的代碼實作方式。
uj5u.com熱心網友回復:
太久沒摸DELPHI,試了下,好像沒有LZ說的問題,你是怎么寫的?我這樣寫測驗,直接在主視窗的OnPaint里畫,貌似一切正常,其他控制元件也不受影響
procedure TForm1.FormPaint(Sender: TObject);
var
cc: TControlCanvas;
begin
cc := TControlCanvas.Create;
cc.Control := Self.grp1;
// 畫兩個正方形
cc.Brush.Color := clRed;
cc.Rectangle(80, 20, 50, 50);
cc.Brush.Color := clYellow;
cc.Rectangle(100, 20, 130, 50);
cc.Free;
end;
uj5u.com熱心網友回復:
了解了,正式因為我沒有在主Form的paint事件里處理所以才導致了我自己的問題。。謝了哦。
uj5u.com熱心網友回復:
順便問你一個問題:我在TChart的PieSeries中添加餅形圖的資料
PieSeries.AddPie(70, ‘實時效能’, clgreen);
PieSeries.AddPie(30, ‘剩余效能’, clred);
只要我把餅形圖的Label屬性不寫成數字就根本無法顯示出餅形圖來哦。。。如果我用'1' '2'去代替 ‘實時效能’ ‘剩余效能‘ 那么餅形圖就能夠正常顯示。。
這是不是我打開的方式不對哦?還是我的態度不對哦。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/77533.html
標籤:VCL組件開發及應用
上一篇:攔截應用程式向動態庫傳遞的引數
