如图所示:运行实例,我更改了计时器刷新频率为100ms,但是更改为10ms仍然有问题,窗体抖动更厉害,如果更改1000ms,抖动下降,但是会出现画面捕捉延时
C#中相机更新的模块出现问题,运行时间相机会抖动,在线求解.
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- bingbingyihao 2021-10-29 10:00关注
回答:抖动不如说是一闪一闪的,原因是没有双缓冲,页面刷新需要时间的,所以会闪,双缓冲可以很不错的解决这个问题,具体代码实现就是加几条语句,链接如下:
双缓冲(Double Buffer)原理和使用_业精于勤荒于嬉,行成于思毁于随-CSDN博客_双buffer 一、双缓冲作用 双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决。我举几个常见的例子: 例 1. 在网络传输过程中数据的接收,有时可能数据来的太快来不及接收导致数据丢失。这是由于“发送者”和“接收者”速度不一致所致,在他们之间安 https://blog.csdn.net/xiaohui_hubei/article/details/16319249?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163547269516780262585793%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163547269516780262585793&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-16319249.first_rank_v2_pc_rank_v29&utm_term=%E5%8F%8C%E7%BC%93%E5%86%B2&spm=1018.2226.3001.4449里面有C#版本,截取如下:
public void Show(System.Windows.Forms.Control control) { Graphics gc = control.CreateGraphics(); // 创建缓冲图形上下文 (类似 Win32 中的CreateCompatibleDC) BufferedGraphicsContext dc = new BufferedGraphicsContext(); // 创建指定大小缓冲区 (类似 Win32 中的 CreateCompatibleBitmap) BufferedGraphics backBuffer = dc.Allocate(gc, new Rectangle(new Point(0, 0), control.Size)); gc = backBuffer.Graphics; // 获取缓冲区画布 /* 像使用一般的 Graphics 一样绘图 */ Pen pen = new Pen(Color.Gray); foreach (Step s in m_steps) { gc.DrawLine(pen, s.Start, s.End); } // 将双缓冲区中的图形渲染到指定画布上 (类似 Win32 中的)BitBlt backBuffer.Render(control.CreateGraphics()); }
以上资料来源于博主:(右耳朵猫),可以看看
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法
- ¥15 可否在不同线程中调用封装数据库操作的类
- ¥15 微带串馈天线阵列每个阵元宽度计算
- ¥15 keil的map文件中Image component sizes各项意思
- ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
- ¥15 划分vlan后,链路不通了?
- ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据