Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAlfredo Macedo Palhares Alterado mais de 7 anos atrás
1
Programação Orientada a Objetos com C++ Descrição do Trabalho Final
2
Descrição Geral Aplicação para desenho 2D Desenho por clique e arraste Ícones para selecionar a tarefa: Criar nova primitiva: Elipse, Retângulo Modificar primitiva selecionada Mover primitiva para outra posição Trocar atributos de desenho Cor de preenchimento Cor da linha
3
Disposição da tela Ícones para ferramentas devem ser agrupadas em grupos (barras de ferramenta) Desenho, modificação, atributos Posição, tamanho e forma dos ícones é livre Não é permitido usar toolkits de interface gráfica para desenhar e gerenciar ícones Ícones são desenhados na janela principal usando apenas as funções da biblioteca graphics (fornecida)
4
Interação Toda a interação deve ser feita apenas com o mouse Apenas o botão esquerdo do mouse será usado Seleção da ferramenta ou modificação do atributo corrente: Clique sobre o ícone respectivo Seleção do objeto desenhado: Clique sobre o objeto
5
Criação de primitivas Elipses e retângulos Clique sobre um canto e arraste para dimensionar o objeto Para a elipse, os cantos devem representar o menor retângulo envolvente
6
Modificação da geometria de primitivas Posição Clique sobre um objeto, arraste até a posição desejada, e solte o botão do mouse
7
Extensões Outras facilidades podem ser incorporadas se desejado Exemplo: Desenho de outras primitivas Escala / Rotação de objetos Agrupar / desagrupar objetos Alterar a ordem de desenho dos objetos (trazer para a frente ou para trás) Salvar / Recuperar desenhos em arquivo OBS.: Extensões podem melhorar a nota, mas ênfase deve ser em código limpo e correto!
8
Dicas de implementação Use OO (orientação a objetos) para representar as diversas primitivas e ícones como derivados de uma classe base só Métodos draw() desenha o objeto na tela contains(point) retorna true se objeto contém ponto Atributos do objeto representam propriedades Cor de preenchimento / Cor de linha Posição
9
Dicas de implementação Classe para grupo de objetos pode suportar o método “select” Usa o método contains para descobrir qual objeto foi clicado Método draw desenha todos os objetos do grupo Objeto selecionado é desenhado de forma distinta Descobrir se um objeto foi clicado: Cálculos geométricos Usando OpenGL Capítulo 13 do red book: Selection and feedback
10
Dicas de implementação A biblioteca graphics tem um suporte limitado ao mouse É possível apenas saber se o botão está ou não apertado, mas não se o usuário acabou de apertar o botão Lembre, entretanto, que a rotina “display” está sendo repetidamente sendo chamada para desenhar um quadro (30 vezes por segundo) Para distinguir os eventos de mouse, é preciso comparar a situação do botão entre um quadro e outro Veja o exemplo a seguir
11
Exemplo de rotina display void display() { // State between two frames stored in static variables static bool prevPressed = false; // Whether the mouse button was pressed in previous frame static Point prevMouse (0,0); // First position of the mouse Point m (mouseX(), mouseY()); // The mouse position // Process mouse if (prevPressed && !buttonPressed()) // Button Release else if (!prevPressed && buttonPressed()) // Button Press else if (prevPressed && buttonPressed ())// Mouse Drag // Save state for next frame prevPressed = buttonPressed(); prevMouse = m;
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.