在Matlab中同步数字移动

时间:2014-09-30 17:37:50

标签: matlab matlab-figure window-resize

考虑下面的代码,它创建一个带有轴和按钮的简单GUI(您可以直接在Matlab中复制/粘贴)。

function DummyGUI

global hFig hNewFig
ScreenSize = get(0,'ScreenSize');

hFig = figure('Visible','off','Position',[ScreenSize(3)/2,ScreenSize(4)/2,450,285],'ResizeFcn',@CheckPosition);
MyImage = imread('peppers.png');

hButton = uicontrol('Style','pushbutton','String','Push here',...
    'Position',[315,220,70,25],'Callback',@hButton_Callback);

hAxes = axes('Units','Pixels','Position',[50,60,200,185]); 

set(hFig,'Visible','on')

    function hButton_Callback(~,~)   % pushbutton callback   

        imshow(MyImage,'Parent',hAxes);           

        FigPos = get(hFig,'Position');
        hNewFig = figure('Position',[FigPos(1)-450 FigPos(2)+100 350 200]); % Place new figure ~ at top left of 1st one.

        imshow(rgb2gray(MyImage),'Parent',gca) % display some image

    end

    function CheckPosition(~,~) % ResizeFcn callback. Get 1st figure position and update 2nd figure.

        hFigNewPos = get(hFig,'Position'); % Get position/size
        set(hNewFig,'Position',[hFigNewPos(1)-250 hFigNewPos(2)+100 hFigNewPos(3) hFigNewPos(4)]);

    end
end

按下按钮可在轴上显示图像,并在第一个图像旁边打开另一个图形。

我的问题是这个:我们如何将第二个图形的运动相对于第一个图形(〜左上图)同步,以便它始终保持在第一个图形移动的任何位置?

正如您所看到的,我尝试这样做是为ResizeFcn添加一个回调,第二个数字实际上与第一个数字同时调整,正如我所期望的那样,但它不会在屏幕上移动所有,我不明白为什么。当然这个例子非常简单,但我想把它扩展到更复杂的GUI /更多数字。

谢谢!

0 个答案:

没有答案