CSCH, uma ferramenta para apoio do desenvolvimento de aulas presenciais e videoaulas

Caros, boa noite. Tenho desenvolvido uma ferramenta já há algum tempo, para me auxiliar na criação de videoaulas e na condução de aulas presenciais. Como principal diferencial, a CSCH permite que se “desenhe em cima da tela” do sistema operacional, caso desejado, além de viabilizar a criação de diversas páginas de desenho em cada projeto.

No vídeo disponível no link https://www.youtube.com/watch?v=j7LvGzu3Vhs eu explico, sem muitos rodeios e edição, como se usar a ferramenta. O bug de não criar novas páginas de desenho quando a ferramenta de movimento está selecionada, que percebi na gravação do vídeo, foi resolvido e os links abaixo são da versão 1.5.1, que já contém a correção.

Repositório do projeto:

Versão 1.5.1 com OpenJDK (recomendado):
https://github.com/davidbuzatto/ComputerSupportedClassHelper/releases/download/v1.5.1/CSCH-v1.5.1.exe

Versão 1.5.1 sem OpenJDK:
https://github.com/davidbuzatto/ComputerSupportedClassHelper/releases/download/v1.5.1/CSCH-v1.5.1.zip

Quem tiver interesse, de uma olhada. Críticas e sugestões são sempre bem vindas. Já há muito código para ser refatorado, mas pretendo terminar de implementar todas as funcionalidades que quero para depois começar algumas iterações de refatoração.

Abraço!

6 curtidas

Muito bom!! O design ta bem bacana também, mas conforme vai passando o blush (lápis) a tela vai escurecendo até ficar totalmente preta:

SO: Ubuntu 20.10
JDK: OpenJDK
Versão Baixada: v1.5.1


E quando uso o square ele cria varios quadradinhos conforme vai passando o mouse

Hummm. No Windows não há problema, na vdd, nem fiz pensando em Linux. O fundo “transparente” é um JFrame não opaco com uma pintura usando a cor preta com alpha em 254, pq se usar uma cor totalmente transparente, não funciona. O que deve estar acontecendo é que após sucessivos repaints, esse 1 do alpha que está faltando está acumulando.

1 curtida

Prezado David,
Primeiramente, adorei a ideia da ferramenta.
A partir de seu código-fonte, atualizei a biblioteca JTS da versão 1.13 para a 1.18.1.
Também coloquei em comentário a linha abaixo, porque, deixava a área de trabalho totalmente preta onde deveria estar a transparência.
// setSize( Toolkit.getDefaultToolkit().getScreenSize() );
Tenho observado também que, ao aplicar o Pencil ou Brush a tela fica piscando enquanto estou desenhando e ao aplicar qualquer dos itens de linha até estrela ocorre um deslocamento sobreposto (duplicidade) dos itens gerando várias linhas, quadrados e círculos.
Um outro tipo de deslocamento ocorre quando arrasto os itens com o Move como desmonstro no pentágono.

Observação:
SO : Fedora 33
JDK : OpenJDK 11.0.10
Versão Baixada : v1.5.1

Fiz uma alteração no btnPrintScreen.
Da forma que estava, a tela capturada no linux ficava totalmente preta.
Na primeira sugestão com a classe Robot e Image a tela capturada fica com o canal alfa em preto.
Na segunda sugestão com a classe Image e BufferedImage a tela capturada fica com o canal alfa transparente.

public void salvarImagemPNG() {

    dConfig.setProcessEventsMainWindow(false);

    try {

        JFileChooser jfc = new JFileChooser();
        jfc.setCurrentDirectory(dConfig.getDefaultDir());
        jfc.setDialogTitle("Save Print Screen");
        jfc.setMultiSelectionEnabled(false);
        jfc.setFileFilter(new FileNameExtensionFilter("Portable Network Graphics", "png"));

        if (jfc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
            File fileName = jfc.getSelectedFile();
            if (!fileName.getName().endsWith(".png")) {
                fileName = new File(fileName.getAbsolutePath() + ".png");
            }
            dConfig.setDefaultDir(fileName.getParentFile());

            // Captura a tela com fundo preto
//                Robot robot = new Robot();
//                java.awt.Image image = robot.createScreenCapture(new java.awt.Rectangle(getWidth(), getHeight()));
//                paint(image.getGraphics());
            
            // Captura a tela com fundo quadriculado (canal alfa trasnparente)
            java.awt.Image image = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_4BYTE_ABGR);
            paint(image.getGraphics());

            ImageIO.write((RenderedImage) image, "png", fileName);
        }

    } catch (IOException ex) {
        ex.printStackTrace();
    }

    dConfig.setProcessEventsMainWindow(true);

}

enviou atualização?

Olá, amanhã vejo o que vc fez e atualizo. Obrigado :wink:

Te respondendo direito agora.

A atualização da JTS acho que deve ser irrelevante, pq dela eu uso somente a simplificação geométrica para recalcular os pontos dos desenhos de caminhos (lápis, pincel e borracha) aumentando a “suavidade”.

Em relação ao print, preciso dar uma olhada, pq eu quero o fundo tbm quando tem alpha. Afinal, se tem fundo transparente, provavelmente o usuário está desenhando “em cima” da tela.

Há muitas inconsistências em relação aos kits de janelamento do Windows e dos ambientes do Linux e a ferramenta foi feita pra Windows, então eu não me preocupo com isso, mas vou conferir tudo. O público alvo (professores), em sua massiva maioria usa Windows.

Abraço!

Em relação ao flickering e a duplicidade dos desenhos, isso de novo é inconsistência no Linux. O painel onde ocorrem as operações de desenhos e suas ramificações está com double buffering ativado. Em relação ao printscreen, vou manter como está, pois no Windows funciona da forma que foi pensado. Das suas modificações, só acatei a atualização da JTS que parece ter algumas correções/melhorias na suavização geométrica.