- 积分
- 42
- 注册时间
- 2005-10-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2007-5-22 11:19:12
|
显示全部楼层
来自 湖北武汉
起了怪了
想实现如下GUI
- function VCGui
- ezplot(@sin);
- set(gcf,'WindowButtonDownFcn',@Action,'DoubleBuffer','on');
- function Action(hObject,eventdata,handles)
- hold on;
- p=mean(get(gca,'currentpoint'));
- plot(p(1),p(2),'o','MarkerSize',8,'MarkerFaceColor','r')
复制代码
VC实现如下:
- void VCTESTView::OnLButtonDown(UINT nFlags, CPoint point)
- {
- CView::OnLButtonDown(nFlags, point);
- if(mCMatGraph.DrawType==1)
- {
- mwArray mPoint = mean(get(gca(),mwArray("currentpoint")));
- hold(mwArray("on"));
- Vplot(mPoint(1),mPoint(2),"o","MarkerSize",8,"MarkerEdgeColor","g","MarkerFaceColor","r");
- drawnow(mwArray::DIN);
- }
- }
复制代码
居然得到的结果是有延迟?
画的始终是上一个点,而第一个点不知道从何方而来
设置一变量
改窗口子类化程序
- if(Msg==WM_LBUTTONDOWN)
- {
- if(CMatGraph::DrawType==1)
- {
- ::SendMessage(CMatGraph::ViewHandle,WM_LBUTTONDOWN,wParam,lParam);
- }
- return 0;
- }
复制代码
添加一菜单
- void CCLTEM25DView::OnVCGui()
- {
- mCMatGraph.DrawType=1;
- }
复制代码
改消息处理函数
- void VCTESTView::OnLButtonDown(UINT nFlags, CPoint point)
- {
- CView::OnLButtonDown(nFlags, point);
- if(mCMatGraph.DrawType==1)
- {
- mwArray mPoint = mean(get(gca(),mwArray("currentpoint")));
- hold(mwArray("on"));
- Vplot(mPoint(1),mPoint(2),"o","MarkerSize",8,"MarkerEdgeColor","g","MarkerFaceColor","r");
- drawnow(mwArray::DIN);
- }
- }
复制代码
结果还是如此。画的始终是上次鼠标按下的点?
起了怪了,吃饭先 |
|