图像缩略图

放大

版本1.0.0.0(4.13 KB)由 里克·辛德曼
将鼠标变成弹出式放大镜以查看二维绘图的详细信息。
4.8
80级

424下载

更新2016年5月11日

查看许可证

编者按:此文件是一个文件交换推荐商品

有没有想过MATLAB有一个放大镜,这样你就可以在不需要一次又一次放大和缩小的情况下查看绘图的一个小区域的细节?只需运行“放大.m”,将感兴趣的图形作为当前图形,然后使用鼠标左键打开一个你可以控制的放大视图。或者在单击bri时使用“Ctrl”键打开一个放大镜,释放时将其“锁定”在图形上(用于复制和打印图形)。使用“<”和“>”键使放大镜变小或变大。使用“-”和“+”可减小或增大放大率。

引用为

里克·辛德曼(2021年)。放大(//www.tianjin-qmedu.com/matlabcentral/fileexchange/5961-magnify),MATLAB中央文件交换。恢复.

评论和评级(105)

伟大的

亚伦·弗里曼

谢谢,伙计,这正是我想要的。
https://www.wiscon-tech.com/air-classifier-zigzag-separation/
我将基于此文件优化我的产品。

孙玉阁

如何使用

郭瑞林

非常感谢。

赵国庆

美好的

炜彬 陈

如何退出?

欧阳光启

令人惊叹的

曾晨

非常感谢

田杰

谢谢你的emarkable函数,你能告诉我如何退出这个函数吗?

克里斯

添加了一个简单的修改,以允许独立的x/y放大。调整第31行a2用户数据的设置,使其具有三个字段[2 0.2],调整第64行以调用位置集的a2_参数(3)not(2),设置第67行以调用a2_参数(2)not(1),然后添加两个额外的ELSEIF复制行75-78,以使用您选择的按钮修改a2_参数(2)(我选择了[and])。比单次缩放更有用。

李彪

非常好的工具。非常有用。谢谢!

林海莉

陈济阳

宗晶晶

万·柯蒂斯

谢谢。它确实有效。

智勇

牛锡元

非常有帮助,非常感谢!

杨勇

您好,当我将此函数放入MATLAB2018版本的库中时,我得到一个错误:Calculate Figure WindowButtonMotionFcn。但它可以在软件的较低版本上工作。

克莱斯特酒店

困境

王霍华德

那很有帮助!

艾伦

伟大的功能。但是,我想在不关闭图形的情况下停止执行该功能,但还没有找到一个干净的方法来执行。
我在尝试通过右键单击或按住Ctrl键删除/删除左侧的放大框时遇到了另一个问题,但通过将第34-37行替换为:

设置(a2,'Tag','MagBox','UserData',[2,0.2],'Color',get(a1,'Color'),'Box','on');%放大率,帧大小

然后在第92行之后添加以下代码:

elseif strcmp(eventdata.Key,'backspace')| | strcmp(eventdata.Key,'delete'))
删除(findobj(src.Children、'Type'、'Axes'、'Tag'、'MagBox'))

这会在添加的轴上添加一个标记,以便在按下“delete”(删除)或“backspace”(退格)时更容易识别并删除所有放大轴。

徐勇

杜海林

干得好!非常感谢。

黄琼尼

xj z

易卜拉欣·巴奇

城市天空

栾晨

王晓江

如何移动锁定的放大镜?

垃圾桶

这么好!谢谢

姚国伟

谢谢

孙大卫

太好了!Thx~

孙一勇

李吉

谢谢

张颖

太好了,谢谢你

李春阳

非常感谢。

肖强

伟大的

夏平

非常感谢你!

mms3airei

杰克

这对我帮助很大。

恩汉

非常感谢。
这对我帮助很大,如果你不介意的话,我会在代码中做一些修改。
非常感谢。

肥猫

非常感谢。

李宇

尼科莱·诺依曼

amrkzp

呵呵

真的很好~

韩鹏欣

非常有用

马康

干得好!这对我帮助很大,我在代码中做了一些修改。

f1=数字;
图(1:100,兰特(1100),(1:300)/3,兰特(1300)),网格上,
放大(f1)
%在运行下一个代码之前,必须完成图中的放大。假设我们只放大一次。
d=get(f1,Children);
d(1).位置=[0.5 d(1).位置(3)d(1).位置(4)];%将放大的图形移动到特定位置
轴=d(2);
矩形('Position',[d(1).XLim(1),d(1).YLim(1),d(1).XLim(2)-d(1).XLim(1),d(1).YLim(2)-d(1).YLim(1)],'LineWidth',2,'LineStyle','-','EdgeColor','r')在原始图形中标记放大部分

卡尔·维特霍夫

应将“fullcrosshair”替换为“crosshair”,因为R2015和更高版本(可能也在R2014中)不支持前者万博1manbetx

彭丽州

那很有帮助!干得好!matlab现在更强大了

约瑟夫

迈克尔

当图形样式停靠时,它似乎不起作用-有什么想法吗?

要复制该行为,请尝试以下无效操作:
设置(0,'DefaultFigureWindowStyle','docked');
图;绘图(1:100,兰特(1100),1:300)/3,兰特(1300))
网格化;放大
但如果返回到set(0,'DefaultFigureWindowStyle','normal');那么它就可以正常工作了。

凤鸣

非常感谢你!

侗族

谢谢,伙计!太棒了!

阿姆尔哈姆扎

令人惊叹的

阿里

这对我的论文很有用,谢谢。干得好!

凯斯特洛伊

完美的

向春

干得好。
如何在不关闭当前图形的情况下将其与当前图形分离?

谢谢

马丁福斯

尼林布

优秀的代码。如何将其扩展到图中uipanel内的图像?

弗朗索瓦

维克多P

杰出的谢谢

尤瓦尔·科恩

杰出的

尤瓦尔·科恩

干得好^_^

在我的例子中,y轴是对数标度的,看起来只需做如下的小修改即可

代替
集合(a2,'YLim',a1_cp(2)+(1/a2_参数(1))*(a2_位置(4)/a1_位置(4))*diff(get(a1,'YLim'))*[-0.50.5])(在函数“ButtonMotionCallback”中)
通过
集合(a2,'YLim',10.^(log10(a1_cp(2))+(1/a2_参数(1))*(a2_位置(4)/a1_位置(4))*log10(Ylima1(2)/Ylima1(1))*[-0.5 0.5]))

埃夫根尼公共关系

为了正常工作,我做了以下更改:

in==>放大>按钮向下回调39
-set(get(a2,'Children')。。。
-“线宽”,2);

+line_obj=findobj(a2,‘类型’、‘线’);
+if~isempty(行_obj)
+设置(行对象,“线宽”,2);
+结束

埃夫根尼公共关系

功能非常好!但是有一个小问题。通过在功能中使用图像操作,出现错误:

>>imshow(im,[]);
>>放大;
??? 使用==>set时出错
“image”类中没有“LineWidth”属性。

39处==>放大>按钮向下回调时出错
set(get(a2,'Children')。。。

因此,在鼠标移动时,错误函数继续正常工作。
我认为,有必要检查轴上的对象是否为图像,并在这种情况下消除线属性的变化。

庞玉腾

巴拉姆

干得好。我想它需要另一次修订,以解决在新版本的Matlab中暴露出来的一些bug。

我将此函数与imshow()一起使用,它给了我一个错误:

“image”类中没有“LineWidth”属性。
39处==>放大>按钮向下回调时出错
set(get(a2,'Children')。。。

当然,我可以通过删除该行代码轻松解决此问题。此外,Ctrl键似乎会在图像上留下框。另一件可能需要更改的事情是将第二个轴的XTick和YTick设置为[]:

集合(a2,'XTick',[],'YTick',[]);

再一次,干得好!

库奥罗

很棒的应用程序,但当我用它来查看plotyy图形时,它会删除一组数据。需要考虑一下吗?

-库奥罗

托德·韦尔蒂

我也喜欢它,但当x轴是基于日志的时,它似乎工作不好。这几乎是我使用的全部(频率通常是这样绘制的)。我看了代码,但不确定我要花多长时间来制作这个mod。。。。。

穆罕默德·埃尔莫西

极好的,极好的功能

阿克谢B酒店

整洁的谢谢!

莉莎

莉莎

佛法

这真是太棒了。
我不确定我是否做错了,ctrl+click会使框停留在fig上,如果要在同一轴上绘制另一个图形,我如何删除它。

马丁

这看起来非常有用,有人在MATLAB R2007a的更高版本上看到它有任何问题吗?缩放区域不位于绘图上方,因此无法看到。。。

极好的。

吉姆·法伦

在GUI中处理鼠标按钮运动和使用“用户数据”的极好说明。除了学习,它还为我自己的GUI开发节省了几个小时。

谢谢
法伦

萨米·穆拉德

很好,这真的很有帮助

尹海威

很不错的!

迪内什·阿皮亚

杰出的

戈登·迪克斯

非常有用的代码。干得好!

伊夫根尼·施瓦兹曼

如果有人可以告诉我,我是否可以使用此代码来放大其他程序(例如power point的详细信息)?
谢谢

小玩意

机械新星

通过将单位设置为“标准化”,我解决了这个问题。可以在一个gui中使用多个轴。问题:
如果需要,如何删除剩余窗口
偶尔点击鼠标右键?

达芙妮W

这是一个很好的工具!谢谢!
对于那些需要它来处理图像的人,只需用线宽注释掉该行:
%set(get(a2,'Children'),。。。
%“线宽”,2);
这就解决了问题。

我现在想弄清楚的是,如何让它在一个有多个轴的gui中工作。似乎出于某种原因将放大的图像放在gui的边缘。有什么想法吗?

李杰芬奇

非常好的应用程序,谢谢!我稍微修改了一下控件。现在,箭头键分别控制每个轴的放大率,而括号同时控制放大率和+/-键控制窗口大小。

张善荣

太棒了!MATLAB应该把它作为标准图标添加到他们的图形面板中。。。

一个小注释:如果您可以在第一句“if(nargin==0),f1=gcf;end;”之后添加一句“figure(f1);”,应该会更方便。这样,用户选择的图形或当前图形将自动弹出“放大”。

谢谢分享!!!

布雷特·肖尔森

我赞同大郎的建议,以及小组一致认为这是一个非常好的功能!

道次郎

很不错的!有一条评论:

如果您可以在设置线宽之前进行检查,以防存在不具有该属性的对象(例如图像、照明等)。我可以使用它来放大图像文件。

马塞洛泽里

非常好!

约翰·德雷科

按1到5的比例,我会把它定为6。

维姬·斯维登科

哇!杰出的

克里斯蒂娜·赫伯特

很酷

Tsakani Lotten

明亮的

康东日

你做了我真正需要的…谢谢

詹姆斯·古德温

非常非常好!

马哈茂德

真是太棒了!恭喜你!

亚历克斯·波德盖茨基

杰出的

MATLAB版本兼容性
使用R14S01创建
与任何版本兼容
平台兼容性
窗户 马科斯 Linux

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!