算法加载两个图像并显示它。用户可以选择单击其中一个图像并在屏幕上拖动它们。目标是让用户能够叠加图像。
有两个脚本1)Main.m和2)gui_class。脚本Main.m包含gui函数和回调。 gui_class用于加载图像并模拟启动图像拖动功能的点击。
classdef gui_class < handle
内
谎言
properties (Access = private)
x = [];
y = [];
c1 = [];
r1 = [];
h = [];
w = [];
gui_h;
end
methods
%function - class constructor - creates and init's the gui
function this = gui_class
%make the gui handle and store it locally
this.gui_h = guihandles(Main);
%set the callback functions
set(this.gui_h.load_image ,'callback' ,@(src, event) load_image_Callback(this, src, event))
end
end
` methods (Access = private)
function this = load_image_Callback(this, src, event)
%code loads and displays images here
%trigger a mouse click
set(gcf,'windowbuttondownfcn',@(src, event) Mclicked(src, event));
end
function Mclicked(this, src, event)
% get the handles structure
set(gca,'units','pix') ;
mousePositionData = get(gca, 'CurrentPoint')
this.x = mousePositionData(1,1);
this.y = mousePositionData(1,2);
%...Perform task
end
我收到一条错误消息:在matlab指南类中评估图形WindowButtonDownFcn未定义函数时出错 未定义的功能&#39; Mclicked&#39;输入参数类型为&#39; double&#39;。
gui_class / load_image_Callback / @(src,event)中的错误Mclicked(src,event)
如何正确调用此功能?除了这个问题,为什么会发生这种情况? 我在main.m中说明如下:
function Mclicked(hObject, eventdata, handles)
答案 0 :(得分:1)
函数Mclicked
是一个绑定到gui_class
实例的方法,并期望这样一个类作为它的第一个参数,或者通过来自类实例的点符号来调用。所以要么
set(gcf,'windowbuttondownfcn',@(src, event) Mclicked(this, src, event));
或
set(gcf,'windowbuttondownfcn',@(src, event) this.Mclicked(src, event));
将调用该方法。