winform曲线控件 VB的mschart控件画的曲线可以缩放和移动吗?
VB的mschart控件画的曲线可以缩放和移动吗?
VB的mschart控件画的曲线可以缩放和移动吗?
应该行
CVI中的GRAPH控件中的曲线如何缩放
设置属性,有一个可缩放的属性,就可以了。
然后需要缩放的时候,按住ctrl键+鼠标左键 是放大
ctrl+鼠标右键 是缩小
vb picturebox控件中可以画曲线吗
Dim b As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.White)
Dim p As New Pen(Color.Black)
p.EndCap = Drawing2D.LineCap.ArrowAnchor
g.DrawLine(p, 30, PictureBox1.Height - 30, 30, 30)
g.DrawLine(p, 30, PictureBox1.Height - 30, PictureBox1.Width - 30, PictureBox1.Height - 30)
Dim i As Integer
Dim bs As New SolidBrush(Color.Green)
Dim po As New Point
po.X = 0
po.Y = PictureBox1.Height - 35
For i = 700 To 1000 Step 50
g.DrawString(i, Me.Font, bs, po.X, po.Y)
g.DrawLine(p, po.X + 28, po.Y + 5, po.X + 30, po.Y + 5)
po.Y -= (PictureBox1.Height - 100) / 6
Next
po.X = 30
po.Y = PictureBox1.Height - 30
For i = 0 To 40 Step 5
g.DrawString(i, Me.Font, bs, po.X, po.Y + 5)
g.DrawLine(p, po.X, po.Y + 2, po.X, po.Y)
po.X += (PictureBox1.Width - 100) / 8
Next
PictureBox1.Image = b
Alias 画的曲线怎么移动点?
你好!我是凯锐思!
选择任意视图,在空白处同时按住键盘ctrl+shift,点击鼠标左键,选择cv,松手,选取点,再在空白处同时按住键盘ctrl+shift及中键,选择移动。放开ctrl及shift,用鼠标左/中/右键进行CV的移动!
VB 如何保存外部控件的曲线
dim a
for a = 0 to object.width
dim b
for b = 0 to object.height
pset(X,Y)
next a
next b
C++中Chartctrl控件怎么删除原来画的曲线
在工控监测领域,经常需要动态绘制曲线,观察曲线的变化趋势,绘制波形图,绘制频谱等。在前面4讲中介绍了MFC经常用的TeeChart控件和Hight-Speed Chart Ctrl,这两个都是MFC绘图控件的经典(另外,在Qt中还有QwtPlot和QCustomPlot两大神器)。许多人问如何绘制动态变化的曲线,为此专门写下这篇文章。
C++ GUI 绘图控件目录
MFC(VC)
VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入
VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)
TeeChart绘图控件 - 之三 - 提高绘图的效率
MFC下好用的高速绘图控件-(Hight-Speed Charting)
绘制动态曲线
Qt
qt超强精美绘图控件 - QCustomPlot一览
qt超强绘图控件qwt - 安装及配置
对于任何绘图控件,都可以实现动态绘图,其原则是:控件只负责绘图,若想曲线动,就让数据动,就像看电影一样,电影是由一帧一帧的静态图片组合起来的,在一定速度上刷新,静态图片就能动起来;和电影的原理一样,绘图控件能显示静态的曲线,想要它动起来,就让它频在一定时间刷新就可以了。
这就是动态绘图的实现原理。
实现动态曲线需要以下两个准备:
计时器Timer
数组左移
基于Timer的绘图
任何界面库都会有Timer这个实现,在MFC中时OnTimer消息,在Qt中是QTimer类,那种原理基本都一样,下面将以MFC(VC)为例进行说明。
Timer是消息级别最低的消息,它会保证其它级别高的消息优先执行,因此,就算数据大量刷新,也不会影响主线程的其它消息。
MFC生成OnTimer消息,消息响应函数如下:
void CTeeChartDlg::OnTimer(UINT_PTR nIDEvent){ TODO: 在此添加消息处理程序代码或调用默认值 CDialogEx::OnTimer(nIDEvent);}绘图的实现就在这个消息响应函数里如果让定时器设定为1秒触发,每一秒把旧数据去除,绘制新数据,就能看到不停变换的波形;对于趋势图,假如每秒有一个新数据,那么就在定长数组中,把数组所有数据整体左移,同时数组末端加入新数据。代码如下:
/ / brief 左移数组/ param ptr 数组指针/ param data 新数值/void LeftMoveArray(double* ptr,size_t length,double data){ for (size_t i=1;i<length;++i) { ptr[i-1] = ptr[i]; } ptr[length-1] = data;}此函数把整个数组左移,然后新数据放置在数组最末端(右端)。这样,数组就实现“向左运动”,把左移后的数组绘制,就能在绘图控件上发现其变化。
下面开始实现动态绘图(这里演示TeeChart的方法,附件里有HightSpeed-Chart CChartCtrl的方法):
void CTeeChartDlg::OnBnClickedButtonRuning(){ KillTimer(0); ZeroMemory(&m_TeeChartArray,sizeof(double)*m_c_arrayLength); for (size_t i=0;i<m_c_arrayLength;++i) { m_X[i] = i; } m_count = m_c_arrayLength; CSeries chart_T = (CSeries)m_Chart.Series(0); chart_T.Clear(); m_pLineSerie->ClearSerie(); SetTimer(0,1000,NULL); }函数中几个成员变量的定义是:double m_TeeChartArray[2096]; double m_X[2096]; unsigned int m_count; const size_t m_c_arrayLength = 2096;m_TeeChartArray是需要绘制的数组的Y值,m_X是对应的x值,m_count是计数器,每绘制一次,个数加1,主要用于x轴
在timer中的实现如下:
void CTeeChartDlg::OnTimer(UINT_PTR nIDEvent){ TODO: 在此添加消息处理程序代码和/或调用默认值 if(0 == nIDEvent) { ++m_count; drawMoving(); } CDialogEx::OnTimer(nIDEvent);}drawMoving函数用于绘图,timer设定为1秒触发一次,这时就能看到每秒的变化,如果数据是以1秒为刷新周期,每一秒有个新数据,只需要把旧的数据向左移,新数据放到数组最右端,再在绘图控件上把此图形画出来即可看的像动一样。drawMoving函数的实现如下:
void CTeeChartDlg::drawMoving(){ CSeries chart_T = (CSeries)m_Chart.Series(0); chart_T.Clear(); m_pLineSerie->ClearSerie(); LeftMoveArray(m_TeeChartArray,m_c_arrayLength,randf(0,10)); LeftMoveArray(m_X,m_c_arrayLength,m_count); DrawLine_TeeChart(m_X,m_TeeChartArray,m_c_arrayLength);}前面说过timer是优先级最低的消息,如果想曲线动的流畅,可以把时钟设置为0ms,如SetTimer(0,0,NULL);这时会在保证界面流畅的前提下,以最高频率刷新。这样看到的图形会非常流畅。上面介绍的就是动态绘制曲线的思路和方法,附件中有用TeeChart实现和HightSpeedChart实现的例子,考虑到可能有些人没有安装TeeChart,专门把TeeChart分离出来了一个源码,只有HightSpeedChart,不需要安装任何控件。
demo1:
MFC下TeeChart和HightSpeedChart动态绘制曲线图-VS2010

demo2(不用安装任何控件):
MFC动态绘制曲线图-HightSpeedChart实现
3D Curve控件中的曲线颜色可以动态改变吗
你好,align curve 的方法,选中两条曲线,然后执行命令,两条曲线的头尾就会相接,默认情况下,是第一条线会接在第二条线一端(取最近的一端)。打开扩展参数,第一项就是将两条线合并,个人认为比较有用,剩下的选项就是曲线连接的状态,可以在应用命令之后,在通道栏中修改,实时观察你想要的结果。谢谢!
VB2010怎么打印MSCHART的曲线
VB6中要打印 msChart 中的曲线图是利用 Image 控件来打印的。
1、在窗体中设置一个 Image 控件,Name:imgToPrt
2、将 msChart中的曲线图拷贝到粘贴板
Clipboard.Clear
msChart.EditCopy
3、再将粘贴板中的图拷贝到 imgToPrt
imgToPrt.Picture = Clipboard.GetData(vbCFBitmap)
Clipboard.Clear '清除粘贴板
4、打印图
Printer.PaintPicture imgToPrt, 0,0, imgToPrt.Width, imgToPrt.Height
0,0 表示打印的位置坐标(x=0,y=0),自己可以确定
后面两个参数是图的大小,可以实现缩放打印...
VS2010 没用过,也许方法相同,试试吧....
maya 缩放动画曲线
如果是无限延长而不是循环,那么你把白色部分后面的点(帧)拖到最最最后面就可以了(比如10万帧以后),如果是只想循环白色的部分,那你就可以把白色部分和前面的打断(也就是做两断动作),选择这段循环就可以了
vb mediaplayer 控件怎么实现缩放
修改该控件的stretchToFit属性为true即可