无法获得Matlab uicontrol' text'框位于图窗口顶部

时间:2015-08-12 14:27:11

标签: matlab matlab-figure

我想要显示我的文字'在图窗口的顶部,但首先窗口是空的,直到我向下拉伸,窗口中间有我的文字。

'''属性是[左下宽度] 什么'底部'意思?从底部的像素?我无法弄清楚。

我已经尝试过调整底部'但无法在窗口顶部显示文字。

更新: 使用' position',[30 1 600 300] 现在在图窗口的中间显示文字,但我仍然想知道如何在窗口顶部定位。

figure('menu','none','toolbar','none',   'KeyPressFcn', @(src,evnt)parse_keypress(evnt,'press'), 'Name', 'COMMAND UI' );
txt = '';
txt = sprintf( '%s * COMMAND MENU * \n', txt );
txt = sprintf( '%s "B" breaks. \n', txt );
txt = sprintf( '%s "L" toggles Logitech_webcam_settings manual/auto\n', txt );
txt = sprintf( '%s "M" enables dynamic Disparity Map \n', txt );
txt = sprintf( '%s "Q"  quits \n', txt );
txt = sprintf( '%s "P" pauses \n', txt );
txt = sprintf( '%s "S" show proximity pixles \n', txt );
txt = sprintf( '%s "V" shows 2nd video window \n', txt );


uicontrol('Style','text','Position',[30 1 180 600],'String',txt,...
    'HorizontalAlignment','left');

2 个答案:

答案 0 :(得分:1)

您需要指定文本相对于图形窗口大小的位置。默认图形尺寸为560像素宽420像素高。或者你可以通过以下方式获得:

hf = figure('menu','none',...
            'toolbar','none',...
            'KeyPressFcn', @(src,evnt)parse_keypress(evnt,'press'),...
            'Name','COMMAND UI');
figPosition = get(hf,'Position'); % hf.Position also

返回(前两个值可能与您不同,因为它们代表图的左下角相对于屏幕左下角的位置)

680   678   560   420

然后您可以使用它来指定文本的初始位置:

ht = uicontrol('Style','text',...
               'Position',[30 1 180 figPosition(4)],...
               'String',txt,...
               'HorizontalAlignment','left');

当然,如果您调整窗口的高度,文本将相对于左下角移动...

答案 1 :(得分:0)

调用figure时没有指定高度,因此创建了标准尺寸图窗口,并且您的文本位置太高,无法生成图形的大小,因此它会显示文本的大小。界限&#39 ;.

将文本的高度参数降低到

uicontrol('Style','text','Position',[40 1 180 400],'String',txt,...
'HorizontalAlignment','left');

或生成高度大于文字字段的图形

FigHandle = figure('menu','none','toolbar','none',   'KeyPressFcn',    @(src,evnt)parse_keypress(evnt,'press'), 'Name', 'COMMAND UI' );
txt = '';
txt = sprintf( '%s * COMMAND MENU * \n', txt );
txt = sprintf( '%s "B" breaks. \n', txt );
txt = sprintf( '%s "L" toggles Logitech_webcam_settings manual/auto\n', txt );
txt = sprintf( '%s "M" enables dynamic Disparity Map \n', txt );
txt = sprintf( '%s "Q"  quits \n', txt ); 
txt = sprintf( '%s "P" pauses \n', txt );
txt = sprintf( '%s "S" show proximity pixles \n', txt );
txt = sprintf( '%s "V" shows 2nd video window \n', txt );


set(FigHandle, 'Position', [100, 100, 500 600]);

uicontrol('Style','text','Position',[30 1 180 600],'String',txt,...
'HorizontalAlignment','left');