#问题描述
一条曲线显示在AXIS区域内,如何实现鼠标在屏幕显示的曲线上点取后能够得到真实的曲线坐标点。
如图所示,需要将MainFigureShow UIAXES控件里的波形通过鼠标点取之后,把波形一分为二。这时候就需要如问题所描述的操作。
#算法思想
1,在UIAXES控件内取点之后,将屏幕点坐标获取后传入函数
2,将UIAXES控件完整坐标解析出来
3,将UIAXES控件内的坐标轴数据解析出来
4,计算屏幕获取点在UIAXES控件内的位置,再映射到控件坐标内,就可以得出
#程序源码
function [Map_x,Map_Y] = SelectPoint(app)
fScreen_X = app.Screen_X;
fScreen_Y = app.Screen_Y;
fAxis_Y = app.Main_Figure_UIAxes.YTick;
fAxis_X = app.Main_Figure_UIAxes.XTick;
Length_XData = length(fAxis_X);
Length_YData = length(fAxis_Y);
Left_screenX = app.Main_Figure_UIAxes.InnerPosition(1);
bottom_screenY = app.Main_Figure_UIAxes.InnerPosition(2);
screenX_length = app.Main_Figure_UIAxes.InnerPosition(3);
screenY_length = app.Main_Figure_UIAxes.InnerPosition(4);
Map_x = (fScreen_X - Left_screenX) * (fAxis_X(Length_XData)-fAxis_X(1)) / screenX_length + fAxis_X(1);
Map_Y = (fScreen_Y - bottom_screenY) * (fAxis_Y(Length_YData)-fAxis_Y(1)) / screenY_length + fAxis_Y(1);
end