Tôi muốn đặt một số văn bản trong GUI và tôi muốn biết kích thước chính xác là uicontrol
của loại 'text'
cần phải!Thuộc tính văn bản 'Extent' không chứa đúng kích thước
Tôi đã tìm thấy một số chủ đề giải thích rằng điều này có thể được thực hiện bằng cách sử dụng 'Extent'
tài sản của một đối tượng 'text'
chứa cùng một văn bản, xem ví dụ:
function form = tempfunc(txt,font,fontsize)
if nargin <3
fontsize = 10;
end
if nargin < 2
font = 'courier';
end
f = figure('Visible','off','Units','pixels');
u = uicontrol(f,'Style','text','Units','pixels','String',txt,'FontName',font,'FontSize',fontsize);
textsize = get(u,'Extent');
textsize = textsize(3:4);
close(f);
form = figure('Units','pixels');
uicontrol(form,'Style','text','Units','pixels','String',txt,'FontName',font,'FontSize',fontsize,'Position',[5,5,textsize]);
end
vấn đề của tôi bây giờ là điều này không hoạt động. Khi tôi chạy trên với tempfunc(repmat('A',14));
tôi nhận được cửa sổ như hình sau:
Như bạn có thể nhìn thấy từ hình ảnh đỉnh cao của văn bản trích trong biến textsize
là quá nhỏ!
Lưu ý rằng đây là kết quả tôi nhận được khi tôi chạy chương trình trên máy tính chạy Windows của tôi chạy Matlab R2014a. Sau đó tôi chạy chính xác cùng một mã trên một máy Linux chạy Matlab R2013b, và trên máy đó tôi đã nhận được kết quả mà tôi muốn. GUI tôi đang tạo nên (hy vọng) có thể chạy trên bất kỳ máy tính nào, nhưng ngay bây giờ tôi thực sự thua lỗ về cách tôi nên tiến hành tạo một phiên bản hoạt động trên bất kỳ máy nào, vì vậy hãy giúp tôi!
EDIT: Tôi cố gắng để chạy cùng mã trên một máy tính Windows 7 (phiên bản này lần cuối cùng thay vì phiên bản Enterprise của tôi) chạy Matlab R2011b (thay vì R2014a của tôi), nó vẫn tạo ra chiều cao sai của hộp văn bản - nhưng lần này vào hộp văn bản là quá cao - xem hình ảnh:
EDIT2: tôi cuối cùng đã R2014b cài đặt, nhưng đáng tiếc nó đã không giúp đỡ! tôi nhận được một bức tranh nhìn tương tự:
Tôi cũng đã cố gắng để xem nếu lựa chọn khác nhau của độ phân giải màn hình của tôi thực hiện bất kỳ sự khác biệt - họ không.
EDIT3:
tôi đã nhận thấy rằng phông chữ khác nhau mang lại các lỗi khác nhau trong chiều cao, ví dụ phông chữ mặc định (MS Sans Serif) mang lại một hộp văn bản quá cao (và lỗi này ở chiều cao cũng tăng lên khi nhiều dòng được thêm vào) - Tuy nhiên, trên Linux tôi đã nhận được kết quả chính xác cho tất cả các phông chữ mà tôi đã thử.
Nhưng thực sự trường hợp tôi quan tâm nhất là trường hợp sử dụng phông chữ chuyển phát nhanh, vì tôi cần một phông chữ đơn cách cho mục đích của mình.
Tôi có hành vi đúng theo R2014b, Ubuntu 14.04. Vì họ đã thay đổi độ phân giải đồ họa theo chiều sâu cho R2014b, có vẻ như loại vấn đề này hiện đã được sửa. – Ratbert
Tôi nghĩ rằng đó đơn giản chỉ vì nó là linux, nó không giúp gì cả khi tôi cài đặt R2014b. –
Tôi xác nhận tôi quan sát vấn đề này trong R2014b và trong R201b, cả trên Windows –