我在Windows窗體C#中的可滾動面板有問題。Windows窗體C#繪製整個可滾動面板
我的情況 我有一個tabControl的窗體。 在我的選項卡中有一個填充整個選項卡並可滾動的面板。 在運行時,我在每個添加的面板中使用約60個其他面板和6張圖片填充此面板。這導致我可以向下滾動的一個大面板。
我的問題 現在畫這些子板的1需要約0.2秒,我的壞的電腦是很好,reaosnable但我有它只是繪製目前在主面板中看到的東西的問題。 即使我讓主面板加載1分鐘,他仍然只繪製第一對子面板,如果向下滾動,他必須畫下其餘部分。 如果我再次向上滾動一切都是平滑的,所以它看起來像存儲了一次繪製的所有東西。 我想abehaviour他在哪裏基本繪製整個主面板在開始和之後滾動是平穩的。 PS:我不確定「繪圖」是否適合表單的功能。 PPS:我知道這個代碼是不完美的,但我沒有抱怨的性能問題,但我只是想了解這種負荷是如何工作的 一些代碼:
private void Form1_Load(object sender, EventArgs e) {
pnEverything.Controls.Clear();
int yPosition = 20;
for (int i = 1; i <= 48; i++) {
Panel panel = new Panel();
Label label = new Label();
if (i % 2 != 0) {
panel.Location = new Point(10, yPosition);
}
else {
panel.Location = new Point(this.Size.Width/2 + 10, yPosition);
yPosition += this.Size.Width/10;
}
panel.Size = new Size(this.Size.Width/2 - 80, ((this.Size.Width/2 - 80) - 90)/6 + 40);
panel.Tag = i;
panel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
label.AutoSize = true;
label.Font = new Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
label.ForeColor = Color.Black;
label.Name = "lbLade" + i;
label.Location = new Point(panel.Width/2 - label.Size.Width/2, panel.Size.Height - 30);
label.Text = i.ToString();
panel.Controls.Add(label);
int xPosition = 30;
for (int j = 1; j <= 6; j++) {
MyPictureBox pb = new MyPictureBox();
pb.Location = new Point(xPosition, 10);
pb.Margin = new Padding(2);
pb.Name = "pbLade" + i + "Nummer" + j;
pb.Size = new Size((panel.Size.Width - 90)/6, (panel.Size.Width - 90)/6);
pb.SizeMode = PictureBoxSizeMode.StretchImage;
pb.Cursor = System.Windows.Forms.Cursors.Hand;
pb.Position.Lade = i;
pb.Position.Nummer = j;
xPosition += pb.Size.Width + 10;
pb.ImageLocation = @"Bilder\plus.png";
pb.Click += new EventHandler(pbAddCar_Click);
panel.Controls.Add(pb);
}
pnEverything.Controls.Add(panel);
}
}
它應該繪製所有負載。你能告訴我們代碼嗎? – Takarii
我添加了一些代碼 –
PictureBox沒有使繪圖平滑。完成這項工作完全取決於你的工作效率。圖像的像素格式非常重要,只有32bppPArgb是有效的,因爲它與任何現代機器上的視頻幀緩衝格式兼容。任何其他格式呈現〜10倍慢。而圖像的大小很重要,不得不重新調整圖像以適應picturebox非常昂貴,並且一遍又一遍地發生。一定要用最佳的像素格式和正確的尺寸創建自己的位圖。 –