none
Imagem de background RRS feed

  • Pergunta

  • estou desenvolvendo uma aplicação windows form e nela tem a eu fiz uma opção do usuário trocar a imagem de plano de fundo da tela principal do sistema;

     

    A minha dúvida é: aonde eu posso armazenar(tem algum lugar específico para isso) essa imagem para que sempre q o iniciar o sistema ele possa recuperá-la.

    quarta-feira, 30 de abril de 2008 19:57

Respostas

  • Fala Fernando, blz?

    Cara, tenta fazer alguma coisa assim:

    No Visual Studio tem um controle que a gente puxa para a tela, que é um Dialog que permite abrir um arquivo.
    Tente jogar esse arquivo aberto para um objeto, e depois salvar em arquivo esse objeto atraves de Stream.
    É alguma coisa assim, eu não me lembro de cabeça agora. Sorry.

    Ler arquivo.

    openFileDialog1.ShowDialog();
    object obj = openFileDialog1.OpenFile().ToString();

    System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Imagem.jpg");

    sw.Write(obj);
    sw.Close();


    Acho que isso pode funcionar (eu não testei, foi sem o Visual Studio).

    Abs,
    terça-feira, 6 de maio de 2008 13:20
  • Olá, se eu entendi bem o que você quer, segue abaixo um exemplo bem simples.

     

     

    Code Snippet

    private void btnAbrir_Click(object sender, EventArgs e)

    {

       opF.InitialDirectory = "c:\\";

       opF.ShowDialog(this);

       System.IO.File.Copy(opF.FileName, "c:\\teste\\" + System.IO.Path.GetFileName(opF.FileName));

       Image bkimage = Image.FromFile("c:\\teste\\" + System.IO.Path.GetFileName  (opF.FileName));

       this.BackgroundImage = bkimage;

    }

     

     

     

    Só te pesso para dar uma maquiada, porque não fiz nenhum tratamento de erros.

     

    Objetos:

    opF = OpenFileDialog

    bkimage = Image

     

    ok?

     

    Qualquer dúvida é só postar.

     

    Abraço!

    terça-feira, 24 de junho de 2008 20:58

Todas as Respostas

  • outra pergunta, como q eu gravo uma imagem que o usuário selecionou para o plano de fundo em um diretório para a aplicação recuperá-la toda vez q for iniciada?

    quarta-feira, 30 de abril de 2008 20:47
  • Fala Fernando, blz?

    Cara, vc pode renomear um arquivo como "Background" (ou outro nome qualquer) e sempre deixar somente este arquivo em uma pasta que vc queira. Outra forma, é vc armazenar em banco ou arquivo .INI o nome da imagem que será recuperada para o fundo do seu Form.

    Isso já resolve seu problema. Dependendo da sua escolha, vai postando que a gente te ajuda.


    Abs,
    segunda-feira, 5 de maio de 2008 12:12
  •  

    ae Diego td bem?

     

    gostaria de lhe perguntar como eu faço para renomear uma imagem q o usuário selecionou e armazená-la em um diretório qualquer?

     

    Obrigado pela ajuda

    segunda-feira, 5 de maio de 2008 19:55
  • Fala Fernando, blz?

    Cara, tenta fazer alguma coisa assim:

    No Visual Studio tem um controle que a gente puxa para a tela, que é um Dialog que permite abrir um arquivo.
    Tente jogar esse arquivo aberto para um objeto, e depois salvar em arquivo esse objeto atraves de Stream.
    É alguma coisa assim, eu não me lembro de cabeça agora. Sorry.

    Ler arquivo.

    openFileDialog1.ShowDialog();
    object obj = openFileDialog1.OpenFile().ToString();

    System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Imagem.jpg");

    sw.Write(obj);
    sw.Close();


    Acho que isso pode funcionar (eu não testei, foi sem o Visual Studio).

    Abs,
    terça-feira, 6 de maio de 2008 13:20
  • Diego,

     

    fiz dessa forma que você me falou e ele cria a imagem no caminho especificado porém, vazio.

     

    Então no OpenFileDialog o usuário indica onde está a imagem que ele quer adicionar como background e em seguida eu gravo ela em um diretório.

     

    quando eu abro ela no windows explorer, ela está vazia.

    quarta-feira, 7 de maio de 2008 20:03
  • Fernando, blz?

    É cara, pode ter dado algum erro na hora que escrevi esse código ai.
    Veja se vc consegue jogar um Stream ao invés de ser um Object...
    Faça algumas modificações nesse código. Eu não estou conseguindo tempo pra abrir o meu VS, mas assim que der, eu posto aqui uma outra solução.

    Abs,


    quarta-feira, 7 de maio de 2008 20:25
  • Diego,

     

    vou tentar isso que você falou.

     

    Obrigado mais uma vez

    quarta-feira, 7 de maio de 2008 20:36
  • Quero fazer o seguinte na minha aplicação windows form com C#:

     

    quando o usuário clicar em um botão, abrir uma janela para ele selecionar uma imagem que será o papel de parede da aplicação.

    Após selecionada a imagem, salvá-la em um diretório e alterar o papel de parede atual da aplicação para essa nova imagem q acabou de ser gravada.

    terça-feira, 24 de junho de 2008 19:58
  • Olá, se eu entendi bem o que você quer, segue abaixo um exemplo bem simples.

     

     

    Code Snippet

    private void btnAbrir_Click(object sender, EventArgs e)

    {

       opF.InitialDirectory = "c:\\";

       opF.ShowDialog(this);

       System.IO.File.Copy(opF.FileName, "c:\\teste\\" + System.IO.Path.GetFileName(opF.FileName));

       Image bkimage = Image.FromFile("c:\\teste\\" + System.IO.Path.GetFileName  (opF.FileName));

       this.BackgroundImage = bkimage;

    }

     

     

     

    Só te pesso para dar uma maquiada, porque não fiz nenhum tratamento de erros.

     

    Objetos:

    opF = OpenFileDialog

    bkimage = Image

     

    ok?

     

    Qualquer dúvida é só postar.

     

    Abraço!

    terça-feira, 24 de junho de 2008 20:58
  • Se quiser pode por a arroba @ antes dos caminhos que assim você não precisa colocar \\

     

    Fica a seu critério, é que fiz com pressa rsrrsrss.

     

    Me avisa qualquer dúvida.

    terça-feira, 24 de junho de 2008 21:01
  • Eduardo,

    Obrigado pela ajuda, funcionou perfeitamente.

     

    Agora eu só tenho q fazer qndo abrir  o form já buscar a imagem q foi copiada para o diretório.

    quarta-feira, 25 de junho de 2008 11:18
  • Eduardo,

     

    só mais uma pergunta, que tipo de tratamento de erro eu poderia fazer nesse caso?

     

    quarta-feira, 25 de junho de 2008 11:20
  • Depende muito da sua aplicação e necessidade.

     

    Precisa pensar em algumas perguntas:

    1. Você aceita que não seja aberto nenhuma imagem?

    2. Com base na resposta acima, você quer informar para o usuário que nenhuma imagem foi aberta, ou simplemente não fazer nada?

    3. Você quer usar filtro de tipos de arquivos, para não exibir todos os arquivos?

    4. Qual a pasta destino? e se o arquivo já existir lá como você vai tratar isso? você precisa desse tipo de tratamento?

     

    Enfim, são muitas coisas, mas podemos começar pelo simples que é um Try Catch simples.

     

    Code Snippet

    private void btnAbrir_Click(object sender, EventArgs e)

    {

    try

    {

    opF.InitialDirectory = @"c:\";

    opF.ShowDialog(this);

    System.IO.File.Copy(opF.FileName, @"c:\teste\" + System.IO.Path.GetFileName(opF.FileName));

    Image bkimage = Image.FromFile(@"c:\teste\" + System.IO.Path.GetFileName(opF.FileName));

    this.BackgroundImage = bkimage;

    }

    catch (Exception ex)

    {

    //Faça aqui seu tratamento de erros, caso queira que o erro seja "silencioso", comente a linha abaixo.

    throw new Exception(ex.Message);

    }

    }

     

     

    É isso, qualquer coisa estou na área.

    quarta-feira, 25 de junho de 2008 18:09
  • Eduardo,

     

    obrigado mais uma vez pela ajuda.

    quarta-feira, 25 de junho de 2008 20:10