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);
}
Olá, amanhã vejo o que vc fez e atualizo. Obrigado 
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.