在matlab指南类中评估图形WindowButtonDownFcn未定义函数时出错

时间:2017-02-25 07:22:39

标签: matlab matlab-guide

算法加载两个图像并显示它。用户可以选择单击其中一个图像并在屏幕上拖动它们。目标是让用户能够叠加图像。

有两个脚本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)

1 个答案:

答案 0 :(得分:1)

函数Mclicked是一个绑定到gui_class实例的方法,并期望这样一个类作为它的第一个参数,或者通过来自类实例的点符号来调用。所以要么

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

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

将调用该方法。