想用2000个点的数据画光滑曲线,应该怎么做? 如果画折线是不是要用polyline,应该怎么做啊?画光滑曲线要插值吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用样条曲线拟合或者进行插值,样条曲线有如下几类:1.基本样条,三次样条,参数样条2.Besier样条3.B样条(NUBUS曲线) for(i=1;i<=m_areaDy;i++){ htpoint[i].x=htorgx+(1300/m_areaDx)*i; htpoint[i].y=htorgy+(700/m_areaDy)*ht[i]; } pDC->PolylineTo(&htpoint[i],1);这样用polyline对不对啊,为什么我画出来的天马行空的,很乱啊(将ht[i]设为恒值 不好意思,pDC->PolylineTo(&htpoint[i],2048); gdiplus Gdiplus::DrawCurve我正在用 效果非常好 可以了,呵呵。逻辑坐标如果是 pDC->SetMapMode(MM_LOMETRIC); //0.1mm/logic unit;desired axispDC->SetViewportOrg(30,rect.bottom-35); 这样确定的话,跟设备坐标的换算关系是什么那? 如果只是为了画图来看,可以不要插值,用下面的函数即可:BOOL PolyBezier( const POINT* lpPoints, //点座标数组 int nCount ); //点的个数注意,nCount必须为3的倍数再加上1,即3n+1,所以2000个点是不行的,因为2000除以3等于666余2,所以必须是1999个点才行。如果要在光滑曲线上再取点,那就要采用插值的方法。 我也不知道怎么搞的,在《visualc++.net图形图象编程》中看到一个三次样条函数的例子,我原装的copy回来用,结果图形非常的乱!,我也不知道是什么原因,可能是我把代码弄错了吧这本书是电子工业出版社出版,李兰友等编的,个人感觉这本书还可以/ CPoint point[3n+1] ={ CPoint(x1,y1),CPoint(x2,y2),.......};BOOL PolyBezier( const POINT* lpPoints, //点座标数组 int nCount ); //点的个数good! thanks smallbull(黑牛) my23232(hello) ( ) 信誉:100 up------------------?这也能得20!!! 请问如何在关闭窗口时释放掉内存啊 vs2005LINK问题,报错有人知道吗 一个CStatic控件的问题 如何给工具栏的某个按钮更换图标? 关于图像打印的问题。 多线程读写文件(在文件尾添加)需要互斥吗? 请教windows form使用multi-thread的问题 请问在VC中如何改变程序主窗口边框的大小?? 大家来讨论一下,微软用什么来开发软件的?? Edit嵌入对话框 数字示波器RVO3100&a4000接口参数--在线等待 〖高手请进.¥100.00〗
1.基本样条,三次样条,参数样条
2.Besier样条
3.B样条(NUBUS曲线)
{
htpoint[i].x=htorgx+(1300/m_areaDx)*i;
htpoint[i].y=htorgy+(700/m_areaDy)*ht[i];
}
pDC->PolylineTo(&htpoint[i],1);
这样用polyline对不对啊,为什么我画出来的天马行空的,很乱啊(将ht[i]设为恒值
pDC->SetMapMode(MM_LOMETRIC); //0.1mm/logic unit;desired axis
pDC->SetViewportOrg(30,rect.bottom-35);
这样确定的话,跟设备坐标的换算关系是什么那?
BOOL PolyBezier(
const POINT* lpPoints, //点座标数组
int nCount ); //点的个数
注意,nCount必须为3的倍数再加上1,即3n+1,所以2000个点是不行的,因为2000除以3等于666余2,所以必须是1999个点才行。如果要在光滑曲线上再取点,那就要采用插值的方法。
这本书是电子工业出版社出版,李兰友等编的,个人感觉这本书还可以/
const POINT* lpPoints, //点座标数组
int nCount ); //点的个数
good! thanks smallbull(黑牛)
up------------------?
这也能得20!!!