-1
我应该如何在剧情中添加文字以便自动缩放当我制作放大或缩小范围?在放大或缩小时Matlab - 放大缩小文字
两个FontUnits
选项,normalized
和pixels
做不的重新调整。
figure(1);
text(0.5,0.5,'test',...
'FontUnits','Normalized',...
'FontSize',0.25,...
'HorizontalAlignment','center',...
'Color',color...
);
figure(2);
set(gcf,'Position',[935 428 672 504])
text(50,50,'test',...
'FontUnits','pixels',...
'FontSize',100,...
'HorizontalAlignment','center',...
'Color',color...
);
axis([0 100 0 100])
此功能,包括对功能zoomCallBack一个进一步的修改:
function drawtext(p,s,f,color)
% get axes size
ax = axis;
% add some text
ax0=ax(4)-ax(3);
txt = text(p(1),p(2),s,...
'FontSize',f,...
'HorizontalAlignment','center',...
'Color',color);
h = zoom; % get handle to zoom utility
set(h,'ActionPostCallback',@zoomCallBack);
set(h,'Enable','on');
% everytime you zoom in, this function is executed
function zoomCallBack(obj, evd)
% Since i expect to zoom in ax(4)-ax(3) gets smaller, so fontsize
% gets bigger.
ax = axis(evd.Axes); % get axis size
% get all texts in figure
htxt = findobj(gcf,'Type','text');
axi=ax(4)-ax(3);
for i=1:length(htxt)
% change font size accordingly
set(htxt(i),'FontSize',str2num(get(htxt(i),'Tag'))*ax0/axi);
end
end
end
这是一个可行的解决方案,但是,非常棘手的和有时会失败。欢迎任何更好的解决方案。
不,当我进行缩放时,文本不会缩放。它保持恒定的大小,并随着图形变化,而不是在轴上的变焦。我正在寻找完全相反的,文字扩大或缩小根据轴放大... – hyprfrcb
不知道你如何测试它。这对我来说很有用。以下是“Normalized”FontUnit的文档说明:“将字体大小解释为坐标轴高度的一部分,如果调整坐标轴的大小,则字体大小会相应地进行修改,例如,如果FontSize为0.1,以标准化单位为单位,则文字是情节盒高度的1/10“。 –
检查编辑是否有更清晰的参数。当我放大或缩小文字时,文字必须重新缩放。你可以看到我的尝试失败。 – hyprfrcb