問題示例: 我有一個控件可以繪製一些幾何圖形(我使用面板)。 我畫了一條線。 現在,當我將光標移動到其中一條線的提示時,我希望將該點「突出顯示」(圍繞它畫出一個實心圓)。 當我將光標從點移開時,我希望「高亮」圓被擦除,但我不想重繪該線。Winforms多層圖形
所以,從技術上講,我需要兩層: 第一層來繪製我的線。 第2層繪製/擦除高光。 我不想每次在第二層繪製/擦除東西時重繪第一層。
有什麼建議嗎?
問題示例: 我有一個控件可以繪製一些幾何圖形(我使用面板)。 我畫了一條線。 現在,當我將光標移動到其中一條線的提示時,我希望將該點「突出顯示」(圍繞它畫出一個實心圓)。 當我將光標從點移開時,我希望「高亮」圓被擦除,但我不想重繪該線。Winforms多層圖形
所以,從技術上講,我需要兩層: 第一層來繪製我的線。 第2層繪製/擦除高光。 我不想每次在第二層繪製/擦除東西時重繪第一層。
有什麼建議嗎?
@TaW幾乎回答了這個問題。我樹立了一個榜樣:
對於靜態圖中:
private Bitmap myStaticImage;
public Form2()
{
InitializeComponent();
this.myStaticImage = new Bitmap(200, 100);
Graphics g = Graphics.FromImage(this.myStaticImage);
g.DrawLine(Pens.Red, new Point(0, 0), new Point(200, 0));
this.panel1.BackgroundImage = this.myStaticImage;
}
對於動態繪圖:
private void panel1_Paint(object sender, PaintEventArgs e)
{
// Stuff
}
我建議使用PictureBox
或DoubleBuffered
屬性設置爲true的UserControl
。 Panel
控件不是雙緩衝的,會閃爍。
@HighCore建議使用WPF,但不推薦使用'winforms','WPF'不需要10%的時間,代碼和工作量。 – Loathing