2011-12-14 26 views
0

我已經在C#/ Winforms中實現了一個自定義控件,它可以執行語法高亮顯示&自動完成功能。我使用AutoScroll來管理滾動,它很好地工作。Graphics.Draw *,AutoScroll&Culling

目前我還沒有進行優化(確定優化是重要的,但我最後一次;功能是我第一次後),我正在渲染巨大的文件,並且每個按鍵將重新解析受影響的確保語法突出顯示一致。

現在在我的大肉漆方法中,即使它位於剪輯區域之外,我也正在繪製每個字符串,關鍵字等等。但不管文件有多大&有多少個關鍵字組合/高亮位&件我都有,它仍然運行速度快,CPU沒有太多的內存開銷&。

所以我的問題 - 做Graphics.Draw *方法做任何類型的剔除?例如:如果AutoScrollPosition沿着文檔&下移GraphicsDrawString(插入繪製區域之外的一些座標),是否正在進行任何實際工作?另外請注意,我在虛擬機內部的Win 7上運行VS,並且它仍然運行得很快。這並不是說現在這個問題,但是稍後談到優化階段時記住它是很好的。 :d

乾杯, 亞倫

回答

1

從個人的經驗編寫遊戲使用Graphics.Draw *方法,你會如果你執行自己的邊界調用繪製方法之前檢查發現的速度增長。

試圖在屏幕外繪製東西比在屏幕上繪製東西要快,但它仍然明顯慢於根本不繪製它們。

+0

圖例,謝謝! – nevelis 2011-12-15 00:10:51