主要加載繪圖在下面,加載影像是大尺寸影像,每次只加載一部分,影像最終展示出往前推進的效果。目前方法抖動,并且速度緩慢。大神們,有無好的解決方法。
string ludisk = string.Format("D:\\11\\0101.jpg");
Stream s = File.Open(ludisk, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//imgL = Image.FromStream(s);
imgL = Bitmap.FromStream(s);
s.Dispose();
bit = (Bitmap)imgL;
label1.Text = bit.Width.ToString() + "____" + bit.Height.ToString();
GraphicsUnit units = GraphicsUnit.Pixel; //單位設定成像素
Bitmap bmpVoltage1 = new Bitmap(Width - 50, Height);
Graphics gVoltage1 = Graphics.FromImage(bmpVoltage1);
for (int i = 0; i < 5000; i = i + 1)
{
srect = new Rectangle(i, 00, 2000, 1080);
//gVoltage1.DrawImage(bit,rect,i,0,2000,1080, units);
gVoltage1.DrawImage(bit, 0, 0, srect, units);
//gVoltage1.DrawImage(bit, drect, srect, units);
pictureBox.Image = bmpVoltage1;
pictureBox.Update();
pictureBox.Invalidate();
}
uj5u.com熱心網友回復:
速度的話調for里面i每次增加的大小,抖動可能是越快越大吧
uj5u.com熱心網友回復:
pictureBox.Update();//立即更新顯示,會重繪picturebox.Image,做一次整體繪圖pictureBox.Invalidate();//發送訊息,使得pictureBox可見部分全部無效,觸發繪圖
這倆,你把第二個刪掉試試。
另外,雙緩沖繪圖了解下。
uj5u.com熱心網友回復:
打開雙快取 DoubleBuffered = true;所有 控制元件都有此屬性
uj5u.com熱心網友回復:
pictureBox控制元件是開放了雙快取的uj5u.com熱心網友回復:
刪了是一樣的效果,沒有改善。雙快取都是打開了的
uj5u.com熱心網友回復:
繪制 5000 個圖形,也就是幾十微秒的事情,沒有顯示成一個色塊,只因為你的機器還差了點uj5u.com熱心網友回復:
繪制是沒有問題的,只是每次整幅繪制推進時,肉眼會感覺抖動
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/276495.html
標籤:C#
上一篇:在textbox中顯示datagirdview中資料的行數
下一篇:多執行緒的問題
