-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