2015-04-07 11 views
5

Ho un problema di compatibilità tra Linux e MacOS con un Matlab Gui. L'interfaccia grafica è sviluppata sotto Linux Debian 7.0. Ecco l'aspetto su questa piattaforma:Compatibilità con Matlab Gui - Diversi aspetti tra Linux e MacOS

enter image description here

Ora, eseguire il file .m su MacOS ed ecco il risultato:

enter image description here

Come si può vedere, il pannello (la scatola dove ci sono i 3 dischi sulla prima figura (scusate, i 3 dischi non appaiono sul secondo) e, più globalmente, la figura su MacOS 10.9.5 è allungata orizzontalmente, cioè la finestra è più larga che alta.

Ho provato a cambiare unità (provato con caratteri, normalizzati, pixel) ma non lo fa.

non mi dà fastidio avere un font diverso per le caselle "edit" e pulsanti, ma mi piacerebbe avere lo stesso rapporto di dimensione sotto entrambi i sistemi operativi per il pannello, cioè per avere un pannello quadrato come sotto Linux Matlab.

Se qualcuno potesse aiutarmi, questo sarebbe bello

Grazie

+6

Avresti più aiuto se hai pubblicato un esempio minimale che riproduca il problema. –

+0

I display Mac possono utilizzare alcune risoluzioni funky (_unconventional_) e per contenere anche le impostazioni DPI non convenzionali. La prima cosa che farei è controllare che le impostazioni DPI siano comparabili su entrambi i sistemi operativi. Per le impostazioni DPI in MAC, puoi guardare [qui] (http://superuser.com/questions/13412/change-dpi-on-osx) o [qui] (http://www.eizoglobal.com/support/ compatibilità/dpi_scaling_settings_mac_os_x/index.html). Per Linux, puoi iniziare [qui] (http://askubuntu.com/questions/197828/how-to-find-and-change-the-screen-dpi) – Hoki

risposta

1

il trucco è non solo di impostare il 'Units'-'pixels' agli oggetti GFX, ma anche utilizzare quelle unità per impostare la posizione. :-)

Nel seguente frammento di codice ha è la maniglia degli assi e hf la maniglia della figura allegata. È possibile forzare una certa dimensione in pixel per gli assi:

set(hf, 'Units', 'pixels'); %// Not necessary, but better not mix units 

set(ha, 'Units', 'pixels'); 
pos = get(ha, 'position'); 
set(ha, [pos(1:2), 400, 400]); %// 400x400 pixels 

È possibile applicare questo alla posizione qualsiasi oggetti grafici in figura.

+0

Ho creato una chat room MATLAB per noi discutere le cose relative al MATLAB o per discussioni che vanno oltre i limiti di un singolo commento. Visitaci quando hai tempo! - http://chat.stackoverflow.com/rooms/81987/matlab – rayryeng

Problemi correlati