2012-01-04 48 views
2

我在OnPaint事件的內部繪製了我的內容,其中e.graphics.DrawLine()等......。到目前爲止,我正在根據表格size(調整我的元素的大小)進行繪製,但現在我想繪製得像我想要的那麼大,並且如果我繪製在可見區域外(繪製對象的位置將在運行時動態決定),我希望用戶使用滾動條來查看我繪製的全部內容的部分內容。如何在使用GDI +繪製內容時使用自動滾動條+

我已啓用AutoScrolling但我不知道它是如何幫助我的,當我沒有任何對該窗體的控制。

我該怎麼辦?

回答

6

只需將AutoScrollMinSize屬性設置爲所需的大小即可。當窗體的ClientSize小於此值時,滾動條自動出現。您還需要彌補您根據滾動位置畫什麼,就像這樣:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     this.AutoScroll = true; 
     this.AutoScrollMinSize = new Size(3000, 1000); 
     this.ResizeRedraw = true; 
    } 
    protected override void OnPaint(PaintEventArgs e) { 
     e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y); 
     e.Graphics.DrawLine(Pens.Black, 0, 0, 3000, 1000); 
     base.OnPaint(e); 
    } 
} 
+0

我怎樣才能做到這一點:窗體大小是默認3000×1000,但是當我畫出來的東西這個區域,滾動條是可見的,我可以滾動到我已經繪製出來的形狀(讓說在3500x1200)? – 2012-01-05 09:51:13

+0

我無法說清楚,這是我的錯誤。我的意思是「...用戶可以滾動到那裏繪製的形狀」。無論如何,如你所說,這是另一個問題,我已經發現類似的東西(不完全一樣)已經被問及答案解決了我的問題:http://stackoverflow.com/questions/2657753/gdi-problem-在繪圖中遇到的多個矩形在窗體上感謝您的幫助。 – 2012-01-05 14:41:15

+0

感謝HansPassant先生,當用'e.Graphics.TranslateTransform(this.AutoScrollPosition.X,this.AutoScrollPosition.Y)滾動時,你已經解決了我舊的閃爍問題;',非常感謝。 – 2013-12-30 07:16:48

1

首先,你應該設置表單,您正在繪製,比最好的方式AutoScroll = true;是畫的東西變成Panel和重新大小的Panel,以適應裏面的內容慢吞吞地說,比表格會自動顯示出它的滾動酒吧的。

相關問題