Переходы окон рисунка Matlab (переходы экрана - дизайн GUI) - PullRequest
0 голосов
/ 09 июня 2011

Моя идея - создать логотип (похожий на стартап Matlab), который будет отображаться до появления моего графического интерфейса.У меня есть следующий код (он был получен при изменении решения, заданного Как мне создать заставку для моего приложения MATLAB GUI? ) для него:

% create a figure1 that is not visible yet, and has minimal titlebar properties
fh = figure('Visible','off','MenuBar','none','NumberTitle','off',...
   'DockControls','off');
% put an axes in it
ah = axes('Parent',fh,'Visible','on');
% put the image in it
ih = imshow('SIS.gif','Parent',ah);
% set the figure1 size to be just big enough for the image, and centered at
% the center of the screen
imxpos = get(ih,'XData');
imypos = get(ih,'YData');
set(ah,'Unit','Normalized','Position',[0,0,1,1]);
figpos = get(fh,'Position');
figpos(3:4) = [imxpos(2) imypos(2)];
set(fh,'Position',figpos);
movegui(fh,'center')
% make the figure1 visible
set(fh,'Visible','on');
pause(3);
close(fh);

У меня две проблемы:

  • Номер 1: Я хочу, чтобы у окон рисунка логотипа не было границ, заголовка и панелей задач.Я попробовал WindowAPI, но он не работает, потому что я вызываю его после вышеприведенного кода, и из-за того, что окно отключено, дескриптор тоже отключен.

  • Номер 2: я хочу, чтобы, когда изображение логотипа исчезло, оно показывало окно графического максимизированного окна.В чем проблема?Переход экрана между окном логотипа и окном графического интерфейса не сглаживается.Я пытался использовать множество приложений Matlab, которые я нашел в Файловом обмене Matlab Central (WindowAPI, Maxfig, Maximize, SetFigTransparency, ...), но безуспешно.Я понял, что проблема заключается в видимости моего графического интерфейса (я запускаю до тех пор, пока не будут созданы все элементы, а затем я включаю его).Из-за выключенной видимости, из-за которой отключена возможность просмотра, предыдущие приложения не влияют на окно рисунка, которое я хочу максимизировать.

После наблюдения за запуском Matlab у менязаметил, что после показа логотипа появляется полноэкранное изображение, за которым следует обычный полноэкранный режим программы.Поэтому я попытался создать максимально полноэкранные окна, которые появляются после закрытия окон логотипа.Однако теперь проблема заключается в переходе между этим последним и графическим окном.Если я включу видимость окна графического интерфейса, а затем разверну его, то через мгновение можно будет увидеть тот переход, который меня беспокоит.Я не знаю, что делать.Я также думаю, что, если бы я мог избежать того, чтобы окно справочника было текущим, когда я изменил его видимость, возможно, я бы достиг этого.Другим решением может быть таймер, который удерживает белое окно в качестве currentfigure, в то время как направляющее окно находится за изменением его видимости, но я не знаю, как это сделать.Спасибо за Ваше внимание.Приветствия.

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Как я покажу в этом ответе , полученном из этой цепочки новостей MathWorks , вы можете создать окно без заголовка, границ и т. Д., Используя Java. Вот модификация кода из моего другого ответа для создания всплывающего окна с центром на экране:

img = imread('peppers.png');  %# A sample image to display
jimg = im2java(img);
frame = javax.swing.JFrame;
frame.setUndecorated(true);
icon = javax.swing.ImageIcon(jimg);
label = javax.swing.JLabel(icon);
frame.getContentPane.add(label);
frame.pack;
imgSize = size(img);
frame.setSize(imgSize(2),imgSize(1));
screenSize = get(0,'ScreenSize');  %# Get the screen size from the root object
frame.setLocation((screenSize(3)-imgSize(2))/2,...  %# Center on the screen
                  (screenSize(4)-imgSize(1))/2);
frame.show;  %# You can hide it again with frame.hide

Я бы попробовал это сделать, чтобы создать заставку и посмотреть, поможет ли это также с проблемами при переходе в следующее окно графического интерфейса.

0 голосов
/ 12 июня 2011

После долгой исследовательской работы я нашел разумный ответ, который был ближе всего к тому, что я думал.Если вы наберете «заставку» в браузере File Exchange , у вас есть несколько интересных приложений, разработанных специально для него.Я выбрал splash.m .Что касается плавного перехода, я использовал следующие программы: WindowAPI и maximize .

Написанный код выглядит следующим образом:

    logoh = splash('logo.jpg'); %# Appear the logo image
    fh = figure('Visible','on','Name','MyGUI','Position',[-1000,-1000,...
    1000,500],'Menu','none','Toolbar','none','NumberTitle','off'); 
    %# Put the figure window outside the screen (see Position property) because
    %# its visibility is on
    WindowAPI(fh,'Alpha',0); %# Make the figure window invisible
    ...
    movegui(fh,'center'); %# Move the figure window to center
    maximize(fh);% Maximize it
    WindowAPI(fh,'Alpha',1); %# Make the figure window visible totally
    pause(2); %# time during which the logo image is exposed
    splash(logoh,'off'); %# Disappear the logo image
...