c# 波形显示,在线等思路?

蚂蚁快跑007 2013-06-25 02:53:14
功能:背景是一个网格图(和示波器一样),然后显示波形,但必须是网格不动,波形不断刷新,我现在是网格和波形同时刷新,很不好看,求指教?
...全文
329 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjw518 2013-11-06
  • 打赏
  • 举报
回复
分别绘制在两个画布上,刷新哪个,就在刷新之前清除需要重绘的那个画布后再绘制就OK了,这样就相互独立了
蚂蚁快跑007 2013-06-27
  • 打赏
  • 举报
回复
现在的问题是,上一次tick触发绘制的图,到下一次tick触发时还存在,也就是说两次的图叠加在一起了,我想要的效果是:第二次绘制的图会把第一个图覆盖掉,捆到这儿了,求指教??
  • 打赏
  • 举报
回复
//private void 画网格() //{ //int 小时 = DateTime.Now.Hour; //int 秒 = DateTime.Now.Second; //int 分钟 = DateTime.Now.Minute; //Graphics 实例 = 曲线显示.CreateGraphics(); ////实例.Clear(Color.White); //Pen 线条 = new Pen(Color.Green, 1); //Pen 线条1 = new Pen(Color.Orange, 1); //for (int 线 = 10; 线 < 210; 线 = 线 + 10) //{ // 实例.DrawLine(线条, new Point(线 + 30, 10), new Point(线 + 30, 200));//竖线需X坐标=同 // 实例.DrawLine(线条1, new Point(40, 线), new Point(230, 线));//横线需Y坐标=同 //} //string[] 标注 = { "100", "90", "80", "70", "60", "50", "40", "30", "20", "10", "0", "-10", "-20", "-30", "-40", "-50", "-60", "-70", "-80", "-90", "-100" }; //int y = 0; Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular); //for (int i = 0; i < 21; i++) //{ 实例.DrawString(标注[i].ToString(), font, Brushes.Red, 0, y); y = y + 10; } //PointF[] 弦线值 = new PointF[200], 弦线值1 = new PointF[180]; //for (int i = 0; i < 弦线值.Length; i++) //{ // 弦线值[i].X = 40 + i;//起始位置 // 弦线值[i].Y = 220 / 2 * (1 - (float)0.8 * (float)Math.Sin(i * 2 * Math.PI / 33)); //}// 轴位置 幅度 //for (int i = 0; i < 弦线值1.Length; i++) //{ // 弦线值1[i].X = 40 + i;//起始位置 // 弦线值1[i].Y = 220 / 2 * (1 - (float)0.8 * (float)Math.Sin(i * 2 * Math.PI / 28)); //} //实例.DrawLines(new Pen(SystemColors.WindowText), 弦线值); //实例.DrawLines(new Pen(SystemColors.WindowText), 弦线值1); //} 分成2个何其简单 //private void 画网格() //{ //Graphics 实例 = 曲线显示.CreateGraphics(); ////实例.Clear(Color.White); //Pen 线条 = new Pen(Color.Green, 1); //Pen 线条1 = new Pen(Color.Orange, 1); //for (int 线 = 10; 线 < 210; 线 = 线 + 10) //{ // 实例.DrawLine(线条, new Point(线 + 30, 10), new Point(线 + 30, 200));//竖线需X坐标=同 // 实例.DrawLine(线条1, new Point(40, 线), new Point(230, 线));//横线需Y坐标=同 //} //string[] 标注 = { "100", "90", "80", "70", "60", "50", "40", "30", "20", "10", "0", "-10", "-20", "-30", "-40", "-50", "-60", "-70", "-80", "-90", "-100" }; //int y = 0; Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular); //for (int i = 0; i < 21; i++) //{ 实例.DrawString(标注[i].ToString(), font, Brushes.Red, 0, y); y = y + 10; } //} //private void 画网格2() //{ //Graphics 实例 = 曲线显示.CreateGraphics(); ////实例.Clear(Color.White); //PointF[] 弦线值 = new PointF[动态变量], 弦线值1 = new PointF[动态变量]; //for (int i = 0; i < 弦线值.Length; i++) //{ // 弦线值[i].X = 40 + i;//起始位置 // 弦线值[i].Y = 220 / 2 * (1 - (float)0.8 * (float)Math.Sin(i * 2 * Math.PI / 33)); //}// 轴位置 幅度 //for (int i = 0; i < 弦线值1.Length; i++) //{ // 弦线值1[i].X = 40 + i;//起始位置 // 弦线值1[i].Y = 220 / 2 * (1 - (float)0.8 * (float)Math.Sin(i * 2 * Math.PI / 28)); //} //实例.DrawLines(new Pen(SystemColors.WindowText), 弦线值); //实例.DrawLines(new Pen(SystemColors.WindowText), 弦线值1); //}
蚂蚁快跑007 2013-06-25
  • 打赏
  • 举报
回复
引用 3 楼 mosangbike 的回复:
在Bitmap里使用Graphics画网格和曲线,每次都重绘这两个内容,绘完后输出到 myPicture.Image=myBitmap,循环这个过程就行了,我的程序按照这种方法,一点闪烁都没有
一会回去一定要试试
蚂蚁快跑007 2013-06-25
  • 打赏
  • 举报
回复
引用 2 楼 wuyazhe 的回复:
自己绘制还是用控件的? 网格希望不动那你可以固定绘制比例尺和网格。 如果是说闪烁,可以用双缓冲。 可以看看 C#无闪烁绘图方法
好的,我好好看一下
蚂蚁快跑007 2013-06-25
  • 打赏
  • 举报
回复
引用 1 楼 xianfajushi 的回复:
那你就不动网格就行了?
,可是这个网格也是绘制的,不是一个位图啊,现在重绘的时候就一起绘制了,如果单独绘制,不知道该怎么改!
threenewbee 2013-06-25
  • 打赏
  • 举报
回复
http://code.msdn.microsoft.com/windowsdesktop/CSCpuUsage-f009d9c1 http://www.syncfusion.com/support/kb/4/Can%20I%20create%20a%20scrolling%20%20moving%20chart%20like%20the%20CPU%20History%20Chart%20in%20Windows%20Task%20Manager
苏门答腊 2013-06-25
  • 打赏
  • 举报
回复
在Bitmap里使用Graphics画网格和曲线,每次都重绘这两个内容,绘完后输出到 myPicture.Image=myBitmap,循环这个过程就行了,我的程序按照这种方法,一点闪烁都没有
兔子-顾问 2013-06-25
  • 打赏
  • 举报
回复
自己绘制还是用控件的? 网格希望不动那你可以固定绘制比例尺和网格。 如果是说闪烁,可以用双缓冲。 可以看看 C#无闪烁绘图方法
  • 打赏
  • 举报
回复
那你就不动网格就行了?
基于C#波形显示控件的实现源码 计算机技术的飞速发展使得其在自动化系统中的应用日益增强。大量监控、图像数据显示软件活跃在自动化工业及自动化教学领域。同时,软件系统的日益复杂化使得模块化开发变得尤为重要。本课题所设计的基于C#波形显示控件就可在微软.NET平台下进行代码功能重用,达到模块化开发和快速开发的目的,使得程序员能够集中精力设计软件的具体业务流程,而不必担心波形呈现的问题。 本文先介绍了.NET平台下用户控件开发的基本方法,以及用C#描述的GDI+图形开发技术,然后提出一种基于C#波形显示控件的设计思路,并对波形坐标值转换、坐标标尺、工具栏、局部放大等具体的设计细节进行详细解析。 本课题设计的波形显示控件实现了同时显示多条数据曲线、局部放大查看、波形显示自动调整最佳坐标范围、动态显示波形等功能。创新之处在于设计了一种方法,使得波形显示控件的坐标轴的起点值和终点值能够以浮点数显示,并自动根据当前波形显示控件的大小,描绘出符合用户视觉的坐标标尺。 波形显示控件实现的功能 (1) 多条波形数据的显示。 该波形显示控件能够同时显示多条波形数据,用户能够控制每条波形数据的显示颜色、线宽、线帽、以及线转折的样式。并且提供了三种波形数据显示的方式:连续数据线、离散点、条形图。 (2) 友好坐标标尺的显示。 该波形显示控件能够根据当前显示数据的坐标范围,友好地显示坐标标尺。例如X轴坐标起始值为34.2,结束坐标值为100.7,则控件不是简单得将坐标10等分并显示并不友好的坐标值,而是通过计算当前波形显示控件的大小,显示40、50……这样的友好的坐标值,并判断是否需要继续在40到50的坐标值之间显示更小分度的坐标值。 (3) 波形显示区域网格的显示。 该波形显示控件可以显示同坐标标尺的坐标线相对应的网格,使得用户能够更直观地观察波形数据。 (4) 波形的局部放大。 该波形显示控件提供了波形局部放大的功能。并根据实际使用和测试,控制了波形放大的精度,以免产生数据溢出的问题。 (5) 坐标自动调整。 该波形显示控件能够根据当前要显示波形数据的值,自动选择最佳的坐标范围,来直观地在控件的波形显示区域显示完整的波形曲线。 (6) 外观颜色方案的修改。 该波形显示控件能够修改外观样式,诸如背景色、网格颜色、坐标线颜色、坐标值颜色等都可以进行调整,以使控件外观能够符合软件整体风格。 (7) 其他细节。 该波形显示控件还设计了一个工具栏,可以方面地使用网格显示、局部放大、坐标自动调整、恢复默认坐标功能。另外还设计右键菜单,能够显示当前鼠标位置的具体坐标值,以及工具栏按钮的快捷按钮。

111,094

社区成员

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

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

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