Chegamos ao final deste minicurso de C#. Para encerrá-lo, vamos continuar trabalhando no formulário frmSobre apenas por uma questão prática. O objetivo aqui será deixar que o usuário personalize a imagem que será exibida na PictureBox e claro que um programa comercial não permitiria tal operação, mas apenas para que aprendamos como gerar e ler arquivos texto, o exemplo neste formulário será propício. Faremos, também, com que o sistema carregue automaticamete a imagem escolhida sempre que este formulário for aberto. Para isso teremos que salvar o nome do arquivo que contém a foto, bem como o caminho até a pasta em que ele se encontra. Nós até poderíamos armazenar isso em um arquivo RTF, que já sabemos como criar, mas vamos aumentar nosso horizonte de conhecimentos! Agora vamos criar um arquivo TXT contendo essa informação, pois assim aprenderemos também a lidar com algumas ferramentas do Namespace System.IO.
Bem, como primeiro passo vamos inserir este Namespace em nossa aplicação, no formulário frmSobre, da seguinte forma:
Feito isso vamos criar uma variável global, privada, que armazenará o caminho do arquivo, da seguinte forma:
Agora vamos localizar o melhor ponto para obtermos o nome do arquivo de imagem selecionado pelo usuário, que é o indicado pela imagem abaixo:
O ponto é o indicado pela flecha, no método FileOk da ferramenta OpenFileDialog. Bem, mas por que eu escolhi este ponto e não outro qualquer? Acontece que neste ponto podemos facilmente obter o caminho do arquivo através do método FileName do "ofdLogo", presente no comando logo acima. Para conseguir isso faremos a seguinte inserção:
Com isso teremos, na variável strCaminhoArquivo, o caminho do arquivo selecionado pelo usuário. Na sequência faremos alterações no código referente ao botão "Salvar" do frmSobre. O primeiro passo será remover o código que faz o salvamento do RichTextBox, afinal de contas agora ele já está gerado e é somente leitura. Portanto, as linhas a serem removidas são:
O código a ser inserido é:
Comentando-o, teremos:
Aqui vale uma importante observação: claro que verificar se um arquivo existe, apagá-lo e cria-lo novamente apenas para armazenarmos uma pequena informação de configuração não é a estratégia mais profissional, no entanto o objetivo aqui foi, “pegando carona” no tópico anterior sobre a geração de arquivos RTF, fazer uma pequena demonstração de como gerar arquivos TXT também. Em C# existem classes e dezenas de métodos para manipulação de dados em arquivos que nos permitiriam fazer de tudo o que imaginássemos com os dados, evitando essa exclusão desnecessária, no entanto a parte de manipulação de arquivos daria um minicurso, então não coloquemos foco nisso agora. Quis fazer este comentário apenas para que não fique a impressão de que essa estratégia utilizada é a única que temos. Repito que não é e ela sequer é boa, mas eu a utilizei para demonstrar a criação de um arquivo TXT que, para o nosso exemplo, apenas fará o armazenamento do endereço da imagem selecionada pelo usuário com o logotipo da aplicação.
Bem, mas vamos continuar...
Vou definir como logotipo um arquivo que tenho na minha área de trabalho, chamado Logo.png.
Agora vou abrir o arquivo c:\CB\Config.txt
Aí está o correto endereço do arquivo selecionado como logotipo, no entanto ele ainda não é carregado automaticamente, assim como acontece com o conteúdo do RichTextBox.
Vamos criar o código para isso. Para efetuarmos a leitura de um arquivo texto, devemos fazer uso da classe StreamReader(ou TextReader). Através dela poderemos ler um arquivo e gerar uma sequência de caracteres, que pode ser armazenada em uma variável do tipo string.
A forma de utilização é bastante simples. Como queremos que a ação de leitura e preenchimento da PictureBox aconteça quando o formulário for carregado, vamos inserir, no método Load do mesmo, o seguinte comando:
Comentando-o, teremos:
Agora vamos executar a aplicação e abrir o formulário de “Sobre o Programa” para ver o que acontece...
Aí está o nosso logotipo automaticamente carregado!
No entanto, vamos tentar alterar a imagem e salva-la, apenas para testar mais uma vez e termos a certeza de que tudo funciona bem. Vejamos o que acontece quando eu tento selecionar outra imagem qualquer e clico no botão "Salvar"...
Ooops! Não funcionou! Pois é, mas isso já era esperado. Vejam que a mensagem que o Visual C# nos retorna é que o arquivo Config.txt não pode ser acessado por já estar aberto. Isso acontece porque no método Load do formulário estamos usando o objReader para efetuar a leitura do arquivo Config.txt e ele permanece “lendo” o arquivo, ou seja, permanece aberto e vinculado ao objReader, por isso quando tentamos fazer a alteração do conteúdo, não é possível. Isso é extremamente fácil de resolver! A classe StreamReader possui um método camado Dispose, que é responsável por liberar os recursos utilizados pelo objeto, que no nosso exemplo é o objReader, e outro chamado Close, que fecha o objeto.
Vamos inseri-los após a colocação do endereço na variável strTemp, como ilustra a imagem abaixo:
Com essa pequena alteração podemos evitar aquele erro, já que o arquivo Config.txt estará liberado pela aplicação após a leitura e o formulário funcionará corretamente!
Agora, para evitar que o usuário tente salvar um endereço vazio, vamos alterar a propriedade Enabled do botão btnSalvar para "False", e habilitá-la para "True" somente quando uma foto for selecionada, no seguinte trecho de código:
Fazendo isso, o botão "Salvar" somente estará habilitado após o usuário ter selecionado um arquivo de imagem para a PictureBox.
Com isso encerramos o minicurso de C#. Vocês encontrarão outros tópicos em seções como a "Dicas/Tutoriais", que são totalmente aleatórios, apenas envolvendo assuntos que achei interessantes. Recomendo que vocês os leiam também e, para encerrar por completo, acessem a página de Comentários, que é o tópico seguinte.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!
Inteligência artificial
O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.
Tomb Raider - O Filme
Considerando todas as adaptações de jogos de videogame para o cinema, a mais bem sucedida foi Lara Croft: Tomb Raider, lançado em 2001 e que faturou 274 milhões de dólares. Ele foi dirigido por Simon West e estrelado pela bela Angelina Jolie.
Civilization
A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.
Mouse
O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Tetris
O título Tetris detém o recorde de jogo mais adaptado de todos os tempos. No total foram mais de 60 plataformas diferentes que receberam alguma versão do quebra-cabeças criado por Alexey Pajitnov. Conheça mais sobre este incrível jogo clicando aqui.
Muitos aplicativos
Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.
PC com barulho?
Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.
Ábaco
O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.