注册 登录
编程论坛 Matlab

[求助]如何在gui的axes中导入图片做背景,然后在背景上绘图?

ass7766 发布于 2007-05-09 10:55, 10092 次点击
我想在GUI中,设置一个axes,把一个图片做背景,然后再在背景图上绘图.我采用了hold on;但结果总只显示背景图片.不显示我所绘的曲线.
G=imread('E:\matlab\jhy3.jpg');
axes(handles.axes2);
imshow(G);
hold on;

x=0:pi/20:pi;
y=sin(x);
plot(x,y)
请问是不是有一个优先级之类的东西,使背景图片总覆盖所绘的曲线?
5 回复
#2
leki2007-05-09 12:18
这个我也试了下,可没有成功,要是做出来了,还请这位仁兄告知一声,谢谢!
#3
ass77662007-05-09 14:38

刚刚瞎试了一下,其实所绘的曲线已经画出来了,只是相对与图片来说,线宽太小了,以致于我们看不见,把线宽加大点就行了.
但我又碰到问题了,GUI里的axes坐标大小如何控制?图片是以像素为单位的,把图片导入axes满后,坐标轴不见了.而我是想以背景图片为坐标系,在图片的相对的一些位置上绘制曲线.但是我无法获取现在的坐标系的大小.所以无法准确的在图片的某一处绘制曲线.

各位有知道的,请赐教!谢谢.

谢过楼上的兄弟.

#4
leki2007-05-09 15:28
多谢了,怎么就没想到这个问题呢,呵呵
第一个问题,我想你是用了这个语句吧 set(h,'Visible','off'),这样的话,坐标轴会隐藏掉的
对于第二个问题,用set语句可以设置坐标轴大小,比如set(gca,'XLim',[0 150],'YLim',[0 150]);
你试试

#5
zhangenter2007-05-11 23:53

imshow隐藏了坐标轴,set(handles.axes2,'visible','on')是可以的,
图片是image对象,得到它的XData和YData属性也可以

image显示,图片是倒着的,画图还是不太方便的

如果要按正常习惯话,最后在原来的位置叠加个隐藏的轴来话

pos = get(handles.axes2, 'pos') ;
newaxes = axes('pos',pos,'visible','off');
x=0:pi/20:pi;
y=sin(x);
line(x,y);
这样画了,新轴是动态调整的,如果要让新轴和图片的范围一样大小,那可以象楼上说的设置newaxes的XLim和YLim为XData,YData

#6
ass77662007-05-14 01:25
谢谢!
1