Спецификация размера области рисования Matlab GUI - PullRequest
0 голосов
/ 25 марта 2020

Я использовал это, чтобы получить и сохранить фигуру:

function sketch(cmd)
  if nargin == 0
      cmd = 'init';
  end

switch cmd
case 'init'
    fig = figure('DoubleBuffer','on','back','off');
    info.ax = axes('XLim',[0 1],'YLim',[0 1]);
    info.drawing = [];
    info.x = [];
    info.y = [];
    set(fig,'UserData',info,...
            'WindowButtonDownFcn',[mfilename,' down'])

case 'down'
    myname = mfilename;
    fig = gcbf;
    info = get(fig,'UserData');
    curpos = get(info.ax,'CurrentPoint');
    info.x = curpos(1,1);
    info.y = curpos(1,2);
    info.drawing = line(info.x,info.y,'Color','k');
    set(fig,'UserData',info,...
            'WindowButtonMotionFcn',[myname,' move'],...
            'WindowButtonUpFcn',[myname,' up'])

case 'move'
    fig = gcbf;
    info = get(fig,'UserData');
    curpos = get(info.ax,'CurrentPoint');
    info.x = [info.x;curpos(1,1)];
    info.y = [info.y;curpos(1,2)];
    set(info.drawing,'XData',info.x,'YData',info.y)
    set(fig,'UserData',info)

case 'up'
    fig = gcbf;
    set(fig,'WindowButtonMotionFcn','',...
            'WindowButtonUpFcn','')
saveas(gcf, 'test.png');
export_fig test2.png
end    

Я хочу зафиксировать размер области до 50x50 (50 пикселей, 50 пикселей) и без осей xy.

Я пытался :

x0=500;
y0=500;
width=50;
height=50;
set(gcf,'position',[x0,y0,width,height])

Тем не менее, он не выглядит хорошо и сохраняет изображение в формате 120x50 пикселей. Как я могу сохранить рисунок как 50x50 пикселей вместо этого?

1 Ответ

0 голосов
/ 05 апреля 2020

проверьте эту функцию, которую я написал, она выполняет в точности то, что вы просили - нанесите рисунок и экспортируйте изображение в указанный размер

https://github.com/fangq/iso2mesh/blob/v1.9.2/img2mesh.m#L516 -L535

ключом является установка оси с помощью этой строки

ax=axes('parent',gcf,'Units','pixels','position',[1, 1, imsize(1), imsize(2)]);

, где единица измерения - это пиксели, а ширина оси изменяется до желаемой длины в пикселях с помощью position. Как только это будет сделано, getframe получит изображение.

...