laboratorio de processamento digital de sinais e imagens´...

16
C ENTRO B RASILEIRO DE P ESQUISAS F ´ ISICAS Laborat´ orio de Processamento Digital de Sinais e Imagens (LPDSI/CAT/CBPF) Introduc ¸˜ ao a Interface Gr´ afica no MATLAB ´ Erica Marques da Silva Santos Marcelo P. de Albuquerque arcio P. de Albuquerque Aline da Rocha G. Mello Eugˆ enio S. Caner R IO DE JANEIRO,DEZEMBRO DE 2004

Upload: others

Post on 03-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

CENTRO BRASILEIRO DE PESQUISASFISICAS

Laboratorio de Processamento Digital de Sinais e Imagens(LPDSI/CAT/CBPF)

Introducao a Interface Grafica no MATLAB

Erica Marques da Silva SantosMarcelo P. de AlbuquerqueMarcio P. de AlbuquerqueAline da Rocha G. Mello

Eugenio S. Caner

RIO DE JANEIRO, DEZEMBRO DE2004

Page 2: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

Sumario

1 Introduc ao 2

2 Handle Graphics 32.1 Handle de objetos . . . . . . . . . . . . . . . . . . . . . . . . . .4

3 Estilos de Controle 6

4 GUIDE 9

5 Exemplo - Criando uma GUI 125.1 Criando a GUI com o GUIDE . . . . . . . . . . . . . . . . . . .135.2 Salvando e interpretando a GUI . . . . . . . . . . . . . . . . . . .145.3 Acessando o arquivo.M . . . . . . . . . . . . . . . . . . . . . . .14

Referencias 15

1

Page 3: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

Introducao a Interface Grafica no MATLAB

Erica M. Silva, Marcelo P. de Albuquerque, Marcio P. de Albuquerque,Aline da Rocha G. Mello, Eugenio S. Caner

21 de dezembro de 2004

ResumoEsta nota tecnica apresenta uma introducao a interface grafica no MAT-

LAB. A princıpio e feito uma breve introducao sobre uma GUI ee tambemapresentado uma definicao sobreHandles Graphics.Os conceitos basicosnecessarios para iniciar o desenvolvimento de uma interface grafica no MAT-LAB, sao vistos em detalhes. O desenvolvimento de uma interface simplesedado como exemplo, no quale apresentado todas as etapas necessarias parao desenvolvimento de uma GUI.

1 Introduc ao

Uma interface grafica com o usuario e o ponto de contato ou metodo de interacaoentre uma pessoa e um computador ou programa de computador.E o metodousado pelo computador e pelo usuario para trocarem informacoes. O computadorexibe texto e imagens na tela e pode gerar sons com um alto falante. O usuariose comunica com o computador utlizando um dispositivo de entada, como umteclado, mouse ou micorfone. A interface com o usuario define a aparencia e afacilidade de uso do computador. Muitas vezes, um computador ou programaeescolhido com base na beleza do design e na eficiencia funcional de sua interfacecom o usuario.

Uma interface grafica com o usuario, ou gui, incorpora objetos graficos, co-mo janelas,ıcones, botoes, menus e texto. A selecao ou ativacao desses objetosnormalmente provoca uma acao ou mudanca. O metodo mais comum de ativacaoconsiste em usar um mouse ou outro dispositivo de selecao para controlar o movi-mento de um ponteiro na tela e pressionar um botao do mouse para selecionar umobjeto ou alguma outra acao.

2

Page 4: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

Uma interface grafica pode ser usada para criar ferramentas muito eficientesno MATLAB ou construir demostracoes interativas de seu trabalho. As razoesmais comuns para se criar uma interface grafica com o usuario sao as seguintes:

1. Voce esta escrevendo uma funcao que vai usar repetidas vezes e menus,botoes ou caixas de texto podem ser usados como metodos de insercao dosdados.

2. Voce esta escrevendo uma funcao ou desenvolvendo um aplicativo para out-ros usarem

3. Voce quer criar uma demosntracao interativista de um processo, tecnica oumetodo de analise

4. Voce acha que GUIs saootimas e quer fazer experiencias com elas.

Este trabaho apresenta os princıpio basicos para se criar uma GUI, porem antesde iniciarmos, sera feito uma breve definicao de Handle Graphics, quee um pre-requisito para projetar e implementar uma GUI no MATLAB.

2 Handle Graphics

O quee handle Graphics? Handle Graphicse o nome dados a uma colecao de roti-nas de baixo nıvel que cumprem a tarefa de gerar graficos no MATLAB. HandleGraphics proporciona um alto grau de controle sobre os graficos. Suas funcoes eopcoes normalmente estao ocultas dentro de arquivos M de nıvel mais alto. Han-dle Graphics permite que voce personalize aspectos de graficos que nao podem sergerados por meio dos comando e funcoes de alto-nıvel. A barra de ferramentas eos menus da janela Figure fornecen uma interface Grafica com o usuario (GUI)para muitos recursos Handle graphics, tornado menos importante, para o usuarioocasional do MATLAB, a compreensao do funcionamento de Handle Graphics.

Handle Graphics se baseia na ideia de que cada componente de um aspectovisual do MATLAB e um objeto, que cada objeto possui umunico identificador,ou handle, associado a ele e que cada objeto possui propriedades que podem sermodificadas quando se desejar.

3

Page 5: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

2.1 Handle de objetos

Suponha que voce tenhana tres figuras abertas, com graficos em duas delas, vocequer alterar a cor de uma linha em um dos eixos dos graficos. Como voce identi-ficaria a linha que desejar alterar. No MATLAB, cada objeto possui um identifi-cador associado, chamado Handle, quee um numero em precisao dupla. Cada vezque um objetoe criado, um Handleunicoe criado para ele. Todas as funcoes doMATLAB que criam objetos fornecem um handle ou um vetor coluna de Handlespara cada objeto criado. Alguns graficos sao compostos por mais de um objeto.Por exemplo, um graficomeshconsiste em umunico objetosurface, enquanto umgrafico polar consiste em diversos objetoslinescom handles individuais associa-dos a cada linha. A tabela a seguir documenta as funcoes de Handle Graphics doMATLAB:

4

Page 6: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

Funcao Descricao

get Obtem as propriedades do objetoset Define as propriedades do objetogcf Obtem afiguraatualgca Obtem os eixos atuaisgco Obtem o objeto atualfindobj Encontra os objetos com propriedades especificadasfindall Encontra objetos ocultos e nao-ocultos com propriedades especificadasallchild RetornaHandlesde descendentes ocultos e nao-ocultos de um objetocopyobj Faz copia de objetosroot Objetoraiz(root)do computador,handle = 0figure Cria uma janelaFigureaxes Criaeixosline Cria linhastext Cria textospatch Cria umretalhorectangle Cria umretangulosurface Cria umasuperfıcieimage Cria umaimagemlight Adiciona efeitos de luzuicontrol Cria controle de interface com usuariouimenu Cria menu de interface com usuariouicontextmenu Cria menu de interface contextual com usuarioreset Restabelece propriedades de objeto aos valores originaisclf Apaga afiguraatualcla Apaga oseixosatuaisishandle Verdadeiro para argumentos que saohandlesde objetosdelete Remove um objetoclose Fecha a janelaFigurerefresh Redesenha aFigura atualgcbo Ativa a manipulacao do objeto atualgcbf Ativa a manipulacao da figura atualclosereq Fecha a figuranewplot Cria eixos a partir da propriedadeNextPlot

5

Page 7: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

3 Estilos de Controle

O MATLAB aceita dez tipos deuicontrol, vejamos quais sao:

1. Botoes simples(pushbuttons). Ospushbuttons, as vezes chamados de botoesde comando ou simplesmente botoes, sao objetos de tela pequenos, re-tangulares que normalmente contem um rotulo de texto. Selecionado umbotao simples com o mouse movendo-se o ponteiro para cima o objeto epressionando-se o botao do mouse, faz-se com que o MATLAB execute aacao definida pala callback string do objeto. Imediatamente depois que umbotao simplese acionado, ele retorna a seu estado inicial. Os botoes simplescostumam ser usados para executar uma acao e nao para mudar um estadoou fixar um atributo.

2. Botoes de chave (toggle buttons). Os botoes de chave sao identicos aosbotoes simples exceto pelo fato de alternarem entre dois estados, para cimae para baixo, quando pressionados. A propriedade “value” de um botao dechavee fixada como igual ao valor especificado pela propriedade “Max”quando o botao esta para baixo ou pressionado.E fixada como igual aovalor da propriedade “Min” quando o botao esta para cima.

3. Botoes de radio (radio buttons). Os botoes de radio consistem em botoescontendo um rotulo e um pequeno cırculo ou diamantea esquerda do tex-to de rotulo. Quando selecionado, o cırculo ou diamantee preenchido e apropriedade “Value”e fixada como o valor especificado pela propriedade“Max”, que por padrao,e1; quando nao-selecionado, o indicadore removi-do e a propriedade “Value”e fixada como o valor especificado pela pro-priedade “Min”, quee 0 por padrao. Radio buttons costumam ser usadospara selecionar uma de um grupo de opcoes mutuamente exclusivas. Parareforcar essa exclusividade, todavia, a callback string para cada botao deradio deve desativar todos os outros botoes de grupo fixando o “Value” decada um deles em0 ou com o valor atribuıdo a propriedade “Min”. Isso, noentanto,e apenas uma convencao. Os botoes de radio podem ser usados emalternancia coma as caixas de controle, caso haja interesse.

4. Caixas de controle. As caixas de controle consistem em botoes com umrotulo e uma pequena caixa quadradaa esquerda do texto do rotulo. Quan-do ativado, o controle alterna entre preenchido e limpo. No primeiro caso, a

6

Page 8: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

caixae preenchida ou contem um “X”, dependendo da plataforma e a pro-priedade “Value” recebe o valor especificado pela prorpiedade “Max”, quepor padrao, e 1; quando limpo, a caixa fica vazia e a propriedade “Value”recebe o valor especificado pela propriedade “Min”, que po padrao, e 0.As caixas de controle costumam ser usadas para indicar o estado de umaopcao ou atributo. Normalamente sao objetos independentes, mas podemser usados em alternancia com botoes de radio, caso haja interesse.

5. Caixas de edicao. Caixas de texto editaveis exibem texto em uma caixa, demaneira que voce possa modificar ou substituir a string de texto dinamica-mente, do mesmo como voce faria em um editor de texto ou em um pro-cessador de palavras. A nova string de texto se torna, entao, disponıvelna propiredade “string” do uicontrol. Caixas de texto editaveis costumampermitir que o usuario introduza textos ou um valor, e podem conter umaou mais linhas de texto. Uma caixa de texto editavel de linhaunica acei-ta uma linha de texto do usuario enquanto uam caixa de textoe concluıdapressionando-de a teclaReturn. A entrada de textos de mutiplas linhaseconcluıda com as teclasControl-Return. As caixas de texto de multiplas lin-has sao criadas fixando-se os valores das propriedades “Max” e “Min” emnumeros tais queMax − Min > 1. A propriedade “Max” nao especificao numero maximo de linhas. As caixas de texto de multiplas linhas podemter um numero ilimitado de linhas. Strings de multiplas linhas podem serespecificadas como vetores celulares de texto ou vetor de carcteres.

6. Caixas de texto. Caixas de texto estatısicas sao controles que simplesmenteexibem uma string de texto como determinado pela propriedade “String”.Caixas de texto estatısitcas costumam ser usadas para exibir rotulos, informacaoao usuario ou valores atuais. Caixas de texto estatısticas sao estatısticas; ousuario nao pode mudar dinamicamente o texto exibido. O texto so pode seralterado mudando-se a propriedade “String”. Strings de texto sao centradasno topo da caixa de texto. Strings de texto maiores que a largura da caixade texto passam porword-wrap; ou seja, linhas multiplas sao exibidas comas linhas quebradas entre palavras quando possıvel. Se a altura da caixa detextoe pequena demais para a string de texto, parte do texto nao sera visıvel.Strings de multiplas linhas podem ser especificadas como um vetor celularde texto ou com um vetor de caracteres.

7. Sliders. Sliders, ou controles deslizantes, consistem em tres partes distin-tas: o canal, ou aarea retangular representando o intervalo de valores de

7

Page 9: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

objetos validos; o indicador dentro do canal representando o valor atual doslider; e setas em cada extremidade do canal. Sliders costumam ser usadospara selecionar um valor de um intervalo de valores. Valores de slider po-dem ser estabelecidos de tres maneiras. Na primeira, o indicador pode sermovido posicionando-se o ponteiro do mouse sobre o indicador, mantendoo botao do mouse pressionando enquanto se move o mouse, e soltando-seo botao quando o indicador estiver no local desejado. O segundo metodoepressionar o botao do mouse enquanto o ponteiro estiver no canal, mas paraum lado do indicador. O indicador se move naquela direcao por algumadistancia padrao igual a cerca de10 do intervalo total do slider. Finalmente,clicando-se em uma das setas nas extremidades do slider o indicador, se na-da diferente for especificado, se move cerca de1 do intervalo do slider nadirecao da seta. Muitas vezes os sliders sao acompanhados de objetos detexto separados usados para exibir rotulos, o valor atual do slider e limitesde intervalo.

8. Frame. Objetosuicontrol framesao simplesmente regioes retangulares opacas,sombreadas, com uma margem. As frames sao analogasa propriedade“Separator” dos objetosuimenu: definem a separacao visual e costumam serusadas para agrupar logicamente botoes de radio ou outros objetosuicon-trol. As framesdevem ser definidas antes que outros objetos sejam coloca-dos dentro delas. Caso contrario, aframepode encobrir os outrosuicontrol.

9. Caixas de listagem. As caixas de listagem parecem caixas de texto demultiplas linhas que permitem que os usuarios selecionem itens individuaisou multiplos de uma lista com um clique de mouse. Itens de lista individu-ais sao especificados por vetores celulares de texto, por um vetor de stringcom espacos em branco, como separacoes, ou por umaunica string com umcarctere de barra vertical′ |′ usado para separar as entradas da lista. Quan-do um item de listae selecionado com um clique de mouse, a propriedade“value” e atualizada com oındice do item selecionado.

10. Menu popup. Os menus popup costumam ser usados para apresentar umalista de escolhas mutuamente exclusivas ao usuario. Esses menus podem sercolocados em qualquer lugar da janela figure. Quando fechado, um menupopup aparece um retangulo ou um botao contendo o rotulo da selecao atualcom um pequeno retangulo ou seta apontando para baixo saliente ao ladodo rotulo para indicar que o objetoe um menu popup. Quando o ponteiroesta colocado sobre um controle popup e o botao do mousee pressionado,

8

Page 10: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

outras escolhas aparecem. Movendo-se o ponteiro para uma escolha difer-ente e soltando-se o botao do mouse, o menu popup se fecha e exibe umanova selecao. As plataformas MS Windows e algumas X-Window Systempermitem que o usuario de um clique em um menu popup para abrı-lo edepois um outro clique em outra escolha para seleciona-la.

4 GUIDE

GUIDE e uma ferramenta GUI fornecida pelo MATLAB que foi projetada paraque voce construa suas proprias GUIs com maior facilidade e rapidez. A funcaoguidecontem ferramentas para criar, instalar, alinhar e alterar o tamanho de ob-jetos uicontrol, um editor de propriedades e inspetor que lista propriedades deobjetos e que permite ao usuario modificar essas propriedade interativamente; ummenu editor para a edicao interativa e para modificar os menuspull-downe con-textuais definidos pelo usuario. GUIDE proporciona uma abordagem interativaao desenvolvimento de GUIs ee otima para ajustar a geometria de uma GUI. Asversoes anteriores dessa ferramenta nao eram tao produtivas quanto escrever osseus proprios arquivos M GUI utilizando o editor.

Para criar uma GUI atraves do GUIDE,voce deve digitar o commandoguideno prompt do MATLAB, em seguida aparace uma tela na qual voce deve escolherdentre as opcoes a quee de seu interesse, apos a selecao confirme e entao iraaparecer a tela que corresponde a opcao escolhida.

9

Page 11: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

10

Page 12: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

O GUIDE armazena uma GUI em dois arquivos, que sao gerados quando vocesalva e interpreta uma GUI:

• Arquivo-FIG : um arquivo com a extensao.fig, contem uma descricao com-pleta sobre as figuras presentes na GUI, tais como sliders, caixas de tex-to, menu popup e assim por diante. Quando voce deseja fazer algumamodificacao na aparencia da GUI, esta deve ser feita no arquivo.fig.

• Arquivo-M : um arquivo com a extensao.m, contem o codigo que controla aGUI, incluindo as callbacks dos componentes. A princıpio este arquivo estaem branco, e cabe ao usuario inserir os comandos que sejam necessariospara o funcionamento da GUI.

11

Page 13: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

5 Exemplo - Criando uma GUI

A GUI usada neste exemplo contem um grafico que indica superfıcie, mesh ou ocontorno dos dados selecionados no menu pop-up.

12

Page 14: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

5.1 Criando a GUI com o GUIDE

13

Page 15: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

5.2 Salvando e interpretando a GUI

Antes de escrever as callbacks,e necessario interpretar e salvar a GUI, para istopressione o botao Run, no menu, uma caixa de dialogo aparece,para que vocepossa salvar sua GUI. Em seguida a seguinte figurae apresentada como resultado:

5.3 Acessando o arquivo.M

Apos salvar a GUI,e possıvel escrever no.mas callbacks de cada componente daGUI. Uma maneira de visualizar o.m e atraves do proprio .fig, para isto leve omouse ate a opcaoViewno menu e dentro desta opcao escolhaM-file editor.

Um editor de texto do MATLAB sera aberto com o.m referente a GUI. Todae qualquer modificacao feita neste arquivo sera enviado ao.fig apos este ter sidosalvo e interpretado.

Uma interface grafica construıda no MATLAB, pode ser tornar uma ferramen-ta extraordinaria na demostracao e exploracao de uma ampla variedade de dadostecnicos, e isto se deve ao fato que o MATLAB dispoe de poderosos recursosnumericos e graficos.

14

Page 16: Laboratorio de Processamento Digital de Sinais e Imagens´ …cbpfindex.cbpf.br/publication_pdfs/NT007.2010_09_29_12_07_20.pdf · 2.1 Handle de objetos Suponha que voce tenhana trˆ

Referencias

[1] Hanselman. Duane, Bruce Littlefield., ”MATLAB 6 - Curso Completo”, Edi-tora Prentice Hall, Capıtulo 31, 2004.

15