考虑下面的代码,它创建一个带有轴和按钮的简单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 /更多数字。
谢谢!