• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

请教: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();
}
...全文
167 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
引用 6 楼 xuzuning 的回复:
绘制 5000 个图形,也就是几十微秒的事情,没有显示成一个色块,只因为你的机器还差了点

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

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2021-04-14 09:47
社区公告

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