请教:C#快速重绘加载图像抖动问题

tanjunjian123 2021-04-14 09:47:28
主要加载绘图在下面,加载图像是大尺寸图像,每次只加载一部分,图像最终展示出往前推进的效果。目前方法抖动,并且速度缓慢。大神们,有无好的解决方法。
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();
}
...全文
231 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanjunjian123 2021-04-15
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
绘制 5000 个图形,也就是几十微秒的事情,没有显示成一个色块,只因为你的机器还差了点

绘制是没有问题的,只是每次整幅绘制推进时,肉眼会感觉抖动
xuzuning 2021-04-14
  • 打赏
  • 举报
回复
绘制 5000 个图形,也就是几十微秒的事情,没有显示成一个色块,只因为你的机器还差了点
tanjunjian123 2021-04-14
  • 打赏
  • 举报
回复
引用 2 楼 兔子党-顾问 的回复:
pictureBox.Update();//立即更新显示,会刷新picturebox.Image,做一次整体绘图 pictureBox.Invalidate();//发送消息,使得pictureBox可见部分全部无效,触发绘图 这俩,你把第二个删掉试试。 另外,双缓冲绘图了解下。
删了是一样的效果,没有改善。双缓存都是打开了的
tanjunjian123 2021-04-14
  • 打赏
  • 举报
回复
pictureBox控件是开放了双缓存的
xuzuning 2021-04-14
  • 打赏
  • 举报
回复
打开双缓存 DoubleBuffered = true; 所有 控件都有此属性
兔子-顾问 2021-04-14
  • 打赏
  • 举报
回复
pictureBox.Update();//立即更新显示,会刷新picturebox.Image,做一次整体绘图 pictureBox.Invalidate();//发送消息,使得pictureBox可见部分全部无效,触发绘图 这俩,你把第二个删掉试试。 另外,双缓冲绘图了解下。
爱喝茶的助手 2021-04-14
  • 打赏
  • 举报
回复
速度的话调for里面i每次增加的大小,抖动可能是越快越大吧

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧