【源码】具有“放大镜”功能的函数magnify

article/2025/11/11 1:53:05

在这里插入图片描述

本函数可以通过鼠标控制来弹出放大镜查看2D图片的细节。

Turns the mouse into a pop-up magnifying glass to look at details of 2D plots.

你是否曾经希望MATLAB拥有一个放大镜功能,这样就可以不用一次又一次地放大或缩小就能看到小块区域的细节?

Ever wish MATLAB had a magnifying glass so you could look at the details of a small region of your plots without having to zoom in and out again and again?

只要以感兴趣的图片作为当前图片运行’magnify.m’,然后使用鼠标左键来显示你控制的需要缩放的视图区域。

Just run ‘magnify.m’ with the figure of interest as the current figure, then use the left mouse button to bring up a magnified veiw that you control.

或者使用“Ctrl”键,同时点击图片弹出一个放大镜,释放后“锁定”到图片上(这样可以用于复制和打印图片)。

Or use the ‘Ctrl’ key while clicking to bring up a magnifying glass that ‘locks’ onto the figure when released (for use when copying and printing figures).

使用’<’ 和 '>'键可以将放大镜的尺寸缩小或增大。

Use the ‘<’ and ‘>’ keys to make the magnifying glass smaller or larger.

使用’-’ 和 '+'可以减小或增大缩放的尺度。

Use ‘-’ and ‘+’ to decrease or increase the magnification level.

源代码如下:

function magnify(f1)

%

%magnify(f1)

%

% Figure creates a magnification box when under the mouse

% position when a button is pressed. Press ‘+’/’-’ while

% button pressed to increase/decrease magnification. Press

% ‘>’/’<’ while button pressed to increase/decrease box size.

% Hold ‘Ctrl’ while clicking to leave magnification on figure.

%

% Example:

% plot(1:100,randn(1,100),(1:300)/3,rand(1,300)), grid on,

% magnify;

% Rick Hindman - 7/29/04

if (nargin == 0), f1 = gcf; end;

set(f1, …

‘WindowButtonDownFcn’, @ButtonDownCallback, …

‘WindowButtonUpFcn’, @ButtonUpCallback, …

‘WindowButtonMotionFcn’, @ButtonMotionCallback, …

‘KeyPressFcn’, @KeyPressCallback);

return;

function ButtonDownCallback(src,eventdata)

f1 = src;

a1 = get(f1,‘CurrentAxes’);

a2 = copyobj(a1,f1);

set(f1, …

  'UserData',[f1,a1,a2], ...'Pointer','fullcrosshair', ...'CurrentAxes',a2);

set(a2, …

  'UserData',[2,0.2], ...  %magnification, frame size'Color',get(a1,'Color'), ...'Box','on');

xlabel(’’); ylabel(’’); zlabel(’’); title(’’);

set(get(a2,‘Children’), …

  'LineWidth', 2);

set(a1, …

  'Color',get(a1,'Color')*0.95);

set(f1, …

  'CurrentAxes',a1);

ButtonMotionCallback(src);

return;

function ButtonUpCallback(src,eventdata)

H = get(src,‘UserData’);

f1 = H(1); a1 = H(2); a2 = H(3);

set(a1, …

  'Color',get(a2,'Color'));

set(f1, …

  'UserData',[], ...'Pointer','arrow', ...'CurrentAxes',a1);

if ~strcmp(get(f1,‘SelectionType’),‘alt’),

  delete(a2);

end;

return;

function ButtonMotionCallback(src,eventdata)

H = get(src,‘UserData’);

if ~isempty(H)

  f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');f_pos = get(f1,'Position');a1_pos = get(a1,'Position');[f_cp, a1_cp] = pointer2d(f1,a1);set(a2,'Position',[(f_cp./f_pos(3:4)) 0 0]+a2_param(2)*a1_pos(3)*[-1 -1 2 2]);a2_pos = get(a2,'Position');set(a2,'XLim',a1_cp(1)+(1/a2_param(1))*(a2_pos(3)/a1_pos(3))*diff(get(a1,'XLim'))*[-0.5 0.5]);set(a2,'YLim',a1_cp(2)+(1/a2_param(1))*(a2_pos(4)/a1_pos(4))*diff(get(a1,'YLim'))*[-0.5 0.5]);

end;

return;

function KeyPressCallback(src,eventdata)

H = get(gcf,‘UserData’);

if ~isempty(H)

  f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');if (strcmp(get(f1,'CurrentCharacter'),'+') | strcmp(get(f1,'CurrentCharacter'),'='))a2_param(1) = a2_param(1)*1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'-') | strcmp(get(f1,'CurrentCharacter'),'_'))a2_param(1) = a2_param(1)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'<') | strcmp(get(f1,'CurrentCharacter'),','))a2_param(2) = a2_param(2)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'>') | strcmp(get(f1,'CurrentCharacter'),'.'))a2_param(2) = a2_param(2)*1.2;end;set(a2,'UserData',a2_param);ButtonMotionCallback(src);

end;

return;

% Included for completeness (usually in own file)

function [fig_pointer_pos, axes_pointer_val] = pointer2d(fig_hndl,axes_hndl)

%

%pointer2d(fig_hndl,axes_hndl)

%

% Returns the coordinates of the pointer (in pixels)

% in the desired figure (fig_hndl) and the coordinates

% in the desired axis (axes coordinates)

%

% Example:

% figure(1),

% hold on,

% for i = 1:1000,

% [figp,axp]=pointer2d;

% plot(axp(1),axp(2),’.’,‘EraseMode’,‘none’);

% drawnow;

% end;

% hold off

% Rick Hindman - 4/18/01

if (nargin == 0), fig_hndl = gcf; axes_hndl = gca; end;

if (nargin == 1), axes_hndl = get(fig_hndl,‘CurrentAxes’); end;

set(fig_hndl,‘Units’,‘pixels’);

pointer_pos = get(0,‘PointerLocation’); %pixels {0,0} lower left

fig_pos = get(fig_hndl,‘Position’); %pixels {l,b,w,h}

fig_pointer_pos = pointer_pos - fig_pos([1,2]);

set(fig_hndl,‘CurrentPoint’,fig_pointer_pos);

if (isempty(axes_hndl)),

axes_pointer_val = [];

elseif (nargout == 2),

axes_pointer_line = get(axes_hndl,'CurrentPoint');axes_pointer_val = sum(axes_pointer_line)/2;

end;

源码下载地址:

http://page5.dfpan.com/fs/dlc9j2b21329116d4c7/

更多精彩文章请关注微信号:在这里插入图片描述


http://chatgpt.dhexx.cn/article/JXS4Wx8D.shtml

相关文章

jQuery 图片查看插件 Magnify 开发简介(仿 Windows 照片查看器)

前言 因为一些特殊的业务需求&#xff0c;经过一个多月的蛰伏及思考&#xff0c;我开发了这款 jQuery 图片查看器插件 Magnify&#xff0c;它实现了 Windows 照片查看器的所有功能&#xff0c;比如模态窗的拖拽、调整大小、最大化&#xff0c;图片的缩放、平移、旋转&#xff…

给图片查看器插件Magnify新增放大镜功能

说实话Magnify图片查看器插件已经非常强大了,媲美Windows的图片查看器,但是,毕竟是开源插件,用起来简单,就是兼容性等各种bug问题。不过还好能用&#xff0c;自己优化一下就好。 在实际项目中&#xff0c;如果只是在页面简单的实现这个图片预览、放大、翻看等功能&#xff0c;…

matlab利用magnify作图

首先&#xff0c;在命令窗口输入magnify&#xff1b; 然后&#xff0c;按住ctrl鼠标左键&#xff0c;选中要看的区域&#xff1b;想要放大局部图片时&#xff0c;我们可以放开ctrl,去点击键&#xff0c;进行放大&#xff1b; 最后&#xff0c;可以放开鼠标左键&#xff0c;点击…

Matlab制作局部放大图——magnify源码

Matlab制作局部放大图——magnify源码 写论文时会遇到需要用matlab做局部放大图的问题&#xff0c;好在matlab给出了magnify局部放大函数。下面是我做的一个小例子。 步骤&#xff1a; 1、先将magnify.m函数复制到包含图片的文件夹下。 2、plot出你要做局部放大图的图片&am…

VBA入门到进阶常用知识代码总结77

第77集 API基础 367、 API概述 API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节…

认识VBA------------------VBA基础

一、前言 在最近的工作中&#xff0c;有幸了解到VBA相关的知识&#xff0c;它主要是被应用于我们平时所使用的word和Excel中&#xff0c;主要用VBA代码来进行数据处理&#xff0c;在办公领域使用的比较广泛。通过一段时间的学习&#xff0c;总结了一些自己的理解和所学&#xf…

vba set语句_零基础学VBA编程06:什么是变量?

每天一篇原创Excel图文 微信公众号&#xff1a;Excel星球 NO.81-什么是变量&#xff1f; 作者&#xff1a;看见星光 微博&#xff1a;EXCELers / 知识星球&#xff1a;Excel 哈罗&#xff0c;大家好&#xff0c;我是星光&#xff0c;今天给大家聊一下编程中一个非常重要的概念—…

Excel VBA使用总结

Excel VBA 1.入门1.1开启VBA之旅 2.语法2.1清除单元格内容2.2vba设密码2.3以前的代码2.4使用正则2.5使用stack 都说世界上最好的语言就是PPT,工作报告&#xff0c;年度总结。。。。 到处都有它的身影&#xff0c;更是被高手设计的惟妙惟肖。 今天&#xff0c;我们不争第一&…

VBA录制宏知识整理

XIWENJIE_VBA基础简介之录制宏 A.录制宏的使用 一、什么是宏 VBA是 [Visual Basic](https://baike.baidu.com/item/Visual Basic)的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是[Microsoft Office](…

excel VBA编程入门,自定义excel数据库模板生成sql语句

文章目录 VBA基础一.了解VBA1.进入vba2.认识宏 二. VBA编程1.hello world2.调出立即窗口和本地窗口3.debug显示4.注释5.数据类型5.变量的生命周期和定义域6.判断语句7.不等于<> , switch case 条件判断8.循环do while退出循环的语句 exit for退出循环的语句 exit do 9.数…

Excel Vba编程初探一

【场景】对EXCEL表格批量添加公式 【分析】 1、如何给单元格写值/公式 2、公式如何带变量 【Excel设置】 【实现】 0&#xff09;代码书写的地方 1&#xff09;代码 Sheet1被激活时触发 Private Sub Worksheet_Activate() Call SetFormula Call TestSetA1ToA10 End Sub函…

二 详解VBA编程是什么

详解VBA编程是什么 直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化…

CSS入门(二)

CSS入门&#xff08;一&#xff09; https://blog.csdn.net/Veer_c/article/details/103882856 CSS文本属性和值&#xff1a; <style type"text/css"> div{/*设置字符间距*/letter-spacing:4px;/*设置文本的位置*/text-align:center;/*给文本设置上划/下划/中…

【前端学习】CSS入门

前端学习&#xff1a;CSS入门 文章目录 前端学习&#xff1a;CSS入门前言1、class011.我的第一个CSS2.导入方式3.基本选择器(1)ID选择器(2)标签选择器(3)类选择器 4.层次选择器5.结构伪类选择器6.属性选择器 2、class021.span/div2.字体样式3.文本样式4.超链接伪类5.列表 3、cl…

CSS入门必备基础(适合小白)

CSS入门必备基础&#xff08;适合小白&#xff09; 一、CSS是什么&#xff1f;1、什么是CSS&#xff1f;2、CSS有什么作用&#xff1f; 二、CSS核心基础1、CSS样式规则2、引入CSS的方法1)、行内式2)、内嵌式3)、链入式 2、CSS选择器1)、基础选择器2)、后代选择器3)、并集选择器…

网页搭建入门---CSS入门

目录 CSS基础语法 CSS选择器 选择器 基于关系的选择器 伪类 伪元素 优先级别 CSS样式 背景 文本 ​ 字体 链接 列表 表格 ​ CSS布局 CSS盒子模型 边框 内边距 外边距 CSS基础语法 为什么要使用CSS 样式定义如何显示HTML元素是为了解决内容与表现分离的问…

postcss入门

无需安装任何环境&#xff0c;即可在线体验未来的css生态系统。 一、什么是postcss 一个用 JavaScript 工具和插件转换 CSS 代码的工具&#xff0c;一套css的生态系统&#xff0c;通过组合插件的形式让我们更舒适的编写css。 二、它能做什么&#xff1f; 1.增强代码兼容性 …

CSS基础入门(详细总结笔记)

目录 1、CSS介绍 2、CSS引入方式 2.1、行内样式 2.2、内联样式 2.3、外联样式 2.4、样式的优先级 2.5、样式选择 3、CSS选择器 3.1、基本选择器 3.2、属性选择器 3.3、层级选择器 3.4、组合选择器 3.5、伪类选择器 3.6、通配符 3.7、选择器优先级 4、CSS盒子模…

CSS入门。(仅供参考)

文档出处部分Coogle和《原创》&#xff0c;如有雷同纯属巧合 《仅供参考》 首先说明以下内容是本人自己整理&#xff08;仅供参考&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 首先浏览器我建议使用Googl…

零基础CSS入门教程(17)–表格样式

点此查看 所有教程、项目、源码导航 本文目录 1. 题外话2. 前言3. HTML表格边框4. CSS设定表格边框5. 设定列边框6. 折叠边框7. 表格尺寸8. 表格内边距9. 表格背景色10. 小结 1. 题外话 不知不觉&#xff0c;写到第40篇了。 可能已经是我写过的最长的系列文章了&#xff0c;虽…