2017-02-25 161 views
0

算法加载两个图像并显示它。用户可以选择其中一个图像并将其拖过屏幕。目标是让用户能够覆盖图像。评估图中的错误WindowButtonDownFcn-未定义的函数在MATLAB指南类中

有两个脚本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指导课 未定义功能“Mclicked”类型“双”的输入参数范围内评估数字WindowButtonDownFcn-未定义功能。在gui_class/load_image_Callback/@(SRC,事件)Mclicked(SRC,事件)

错误

怎样一个人准确地正确地调用这个函数呢?除了这个问题之外,为什么会发生这种情况呢? 我在它的main.m下面说明如所提到的:

function Mclicked(hObject, eventdata, handles) 

回答

1

功能Mclicked是绑定到的gui_class实例的方法,我们期望,因为它的第一个参数或从一个经由点表示法称为这样的类类的实例。因此,无论

set(gcf,'windowbuttondownfcn',@(src, event) Mclicked(this, src, event)); 

set(gcf,'windowbuttondownfcn',@(src, event) this.Mclicked(src, event)); 

将调用方法。

相关问题