MATLAB GUI设计中画图时的注意事项和坐标问题

tech2024-02-22  79

画图时的对象结构:root(屏幕)—>figure—>axes—>line

文章目录

一、实现在坐标轴内使用鼠标画线等功能的基本思路二、最重要的坐标问题1.figure的位置坐标Position是相对于其父对象也就是电脑屏幕2.figure的currentpoint属性3.axes中的位置坐标是相对于其父对象也即某个figure4. axes中的CurrentPoint属性 总结


一、实现在坐标轴内使用鼠标画线等功能的基本思路

1. 要有Figure作为载体 2. 一般如果鼠标移动时,画图就需要用line作图 3. line的父对象只能是axes,不能是figure 4.因此可以将图画在axes上,作为axes的子对象 5.要有一个flag标志位用来表示现在按键是否按下了,只有按下时,才能进行画图

二、最重要的坐标问题

1.figure的位置坐标Position是相对于其父对象也就是电脑屏幕

默认的单位是pixels (如下形式) [x , y , width , height]

2.figure的currentpoint属性

3.axes中的位置坐标是相对于其父对象也即某个figure

1. 默认的单位是normalized 2. [x , y , width , height]设置为[0 0 1 1]可以让坐标轴充满图窗

4. axes中的CurrentPoint属性

1. 返回的是相对于该坐标轴,也就是在该坐标系下的坐标,由坐标轴的某些属性确定 如. 1) xlim 2) ylim3) xdir4) ydir

通常我们只用到返回坐标的xfront 和 yfront


总结

一、 如果需要画图,那么就不要获取figure的currentpoint,因为line是画在axes上的,这样一来,坐标是不统一的,就会出现错误 二、正确的方法应该是,获取当前鼠标指针在axes中的currentpoint,然后再axes上用line画线,这样就正确了

最新回复(0)