herrytcy 发表于 2008-4-18 09:35

如何在 axes 上显示实际图像,即不自动调整横纵轴

用axes显示图像时,编辑不同大小的axes时,图像(医学图像128*128,使得图像缩放不能运用)的大小发生变化,不能够按照图像实际大小显示。希望大家给点建议!

[ 本帖最后由 eight 于 2008-4-18 17:10 编辑 ]

eight 发表于 2008-4-18 10:34

原帖由 herrytcy 于 2008-4-18 09:35 发表 http://www.chinavib.com/forum/images/common/back.gif
用axes显示图像时,编辑不同大小的axes时,图像(医学图像128*128,使得图像缩放不能运用)的大小发生变化,不能够按照图像实际大小显示。希望大家给点建议! 估计有 autosize 类似的属性可以设置吧

herrytcy 发表于 2008-4-18 15:32

找了几个属性还是不行;
图像在figure上显示非常好,就是放在AXES里不行

eight 发表于 2008-4-18 17:03

搞定,花了半个小时看了 imshow 函数,其实既然 figure 行,那你就应该 edit imshow 看看它里面的玄机。我把重要的部分抽取了出来,通用性方面当然是不如 imshow 函数的了,你将就一下吧:
A = imread(yourfilename);
im_handle = imshow(A);
set(handles.axes1, 'Units', 'pixels'); %这个是关键,我没有想到要先进行设置
ax_pos = get(handles.axes1, 'Position');
image_width= size(get(im_handle, 'CData'),2);
image_height = size(get(im_handle, 'CData'),1);
set(handles.axes1, 'Position', );以上适合 fig 文件方式的GUI 程序,m文件方式的 GUI 自己修改一下句柄即可。事实上,上述代码实现了 non stretch-to-fill behavior,即 autosize 的功能

[ 本帖最后由 eight 于 2008-4-22 11:20 编辑 ]

eight 发表于 2008-4-18 17:11

此主题已收录进 matlab 版讨论较多的主题小结 一贴中

herrytcy 发表于 2008-4-22 11:02

回复 5楼 的帖子

非常谢谢院长了,问题基本解决了;
页: [1]
查看完整版本: 如何在 axes 上显示实际图像,即不自动调整横纵轴