• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bigboy123

Guardar Form

19 mensagens neste tópico

Quanto à Screenshot, podes fazer assim:

Código testado e a funcionar

Imports System.Drawing.Imaging
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim gfxscreen As Graphics
        Dim bmpscreen As Bitmap
        If (SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK) Then

            bmpscreen = New Bitmap(Me.Size.Width, Me.Size.Height, PixelFormat.Format32bppArgb)

            gfxscreen = Graphics.FromImage(bmpscreen)
            gfxscreen.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)

            bmpscreen.Save(SaveFileDialog1.FileName, ImageFormat.Png)
        End If
    End Sub
End Class

Para formato TXT basta criares uma rotina que te corra todos os TextBoxes da form e guardar para um txt.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"..Para formato TXT basta criares uma rotina que te corra todos os TextBoxes da form e guardar para um txt..."

Vê este post:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto à Screenshot, podes fazer assim:

Código testado e a funcionar

Imports System.Drawing.Imaging
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim gfxscreen As Graphics
        Dim bmpscreen As Bitmap
        If (SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK) Then

            bmpscreen = New Bitmap(Me.Size.Width, Me.Size.Height, PixelFormat.Format32bppArgb)

            gfxscreen = Graphics.FromImage(bmpscreen)
            gfxscreen.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)

            bmpscreen.Save(SaveFileDialog1.FileName, ImageFormat.Png)
        End If
    End Sub
End Class

Para formato TXT basta criares uma rotina que te corra todos os TextBoxes da form e guardar para um txt.

Funciona mas com incovenientes  :)

Ao guardar gostaria de meter no tipo de ficheiro os tipos de imagem mais utilizados (ex: .jpeg, .bmp) e não aparecer em branco (filter) e gostaria de adicionar também um title no savefiledialog.

Otro problema é que ao tirar o printscreen faz isto:

http://img31.imageshack.us/img31/7030/sadm.th.jpg

Ou seja, quando o savefiledialog ainda está a fechar tira o print ao form e ao savefiledialog  ;)

"..Para formato TXT basta criares uma rotina que te corra todos os TextBoxes da form e guardar para um txt..."

Vê este post:

Poderias dizer-me como depois de fazer o module e tudo o que está inserido no link, como executo de maneira a abrir um dialog para guardar todas as textbox's contidas no form ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona mas com incovenientes  :)

Ao guardar gostaria de meter no tipo de ficheiro os tipos de imagem mais utilizados (ex: .jpeg, .bmp) e não aparecer em branco (filter) e gostaria de adicionar também um title no savefiledialog.

bmpscreen.Save(SaveFileDialog1.FileName, ImageFormat.Png)

e alterares para Jpeg, bmp..?
Otro problema é que ao tirar o printscreen faz isto:

http://img31.imageshack.us/img31/7030/sadm.th.jpg

Ou seja, quando o savefiledialog ainda está a fechar tira o print ao form e ao savefiledialog  ;)

Quanto a este problema, talvez possa ser resolvido com um timer.

É uma questão de experimentares.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ bioshock

O 1 problema resolvi com o seguinte antes do "if" :

        SaveFileDialog1.Title = "Guardar Relatório da Mensagem"
        SaveFileDialog1.FileName = "Relatório da Mensagem"
        SaveFileDialog1.Filter = "Formato de Imagem JPEG|*.jpeg|Formato de Imagem GIF|*.gif|Formato de Imagem PNG|*.png"

A questão do timer, eu não sei usar o timer, tou completamente "branco" nesse assunto. Podes dar-me uma luz no código ?  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ bioshock

O 1 problema resolvi com o seguinte antes do "if" :

        SaveFileDialog1.Title = "Guardar Relatório da Mensagem"
        SaveFileDialog1.FileName = "Relatório da Mensagem"
        SaveFileDialog1.Filter = "Formato de Imagem JPEG|*.jpeg|Formato de Imagem GIF|*.gif|Formato de Imagem PNG|*.png"

A questão do timer, eu não sei usar o timer, tou completamente "branco" nesse assunto. Podes dar-me uma luz no código ?  :biggrin:

Ora bem, fiz aqui umas pequenas linhas de código, já com o Timer e uma Progressbar integrada (pensei na progressbar também).

Fazes o seguinte, adicionas uma Progressbar e um timer.

Nas propriedades do Timer metes o Interval a 1000 (1000 = 1 segundo)

No evento do butão (Quando clicas para seleccionar o directório onde deseja guardar a Imagem) escreves:

  If (SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK) Then
            Timer1.Enabled = True
            Timer1.Start()
        End If

No evento do Timer, colocas:

If ProgressBar1.Value = ProgressBar1.Maximum Then
            Timer1.Stop()
            ProgressBar1.Value = 0
            MsgBox("Gravado com sucesso!")
            bmpscreen = New Bitmap(Me.Size.Width, Me.Size.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            gfxscreen = Graphics.FromImage(bmpscreen)
            gfxscreen.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)
            bmpscreen.Save(SaveFileDialog1.FileName, Imaging.ImageFormat.Png)
        Else
            ProgressBar1.Value += 20
        End If
    End Sub

Não te esqueças de Declarar:

Public Class Form1
    Dim gfxscreen As Graphics
    Dim bmpscreen As Bitmap

E no topo:

Imports System.Drawing.Image

Corre a Aplicação e voilá :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para que é que fazes isso da progressbar? Só para perder 5 segundos? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, mas sempre fica com melhor aspecto, digo eu.

Clicas para salvar no teu directório e vês uma Progressbar dá logo outro aspecto, a meu ver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a progressbar devia ser usada quando o programa estava a guardar a imagem e não antes. Assim é só perder tempo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

? Acho que não percebeste o código..

A ProgressBar começa a correr depois de seleccionar o directório, não é antes lol.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ bioshock WOWOWOW  :)

Excelente a tua ajuda, ficou 5*

E o progressbar ajuda muito porque se eu alterasse o valor de progressbar1.value += 20 para progressbar1.value += 25 ou 50 o printscreen sai na mesma apanhando a mensagem de Sucesso, assim com o valor de 20 está escelente.

A trabalhar nas horas  :);)

Agora só falta como guardar as textbox's em ficheiro .txt  :D

Alguma Luz ? :bored:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto às Textbox's, isto funciona, mas não sei se é o que pretendes.

No butão Guardar:

SaveFileDialog1.Filter = "Ficheiros de texto(*.txt)|*.txt"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName <> "" Then
            FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
            PrintLine(1, TextBox2.Text, TextBox2.Text, TextBox3.Text) 'copia o texto
            FileClose(1)
        End If
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto às Textbox's, isto funciona, mas não sei se é o que pretendes.

No butão Guardar:

SaveFileDialog1.Filter = "Ficheiros de texto(*.txt)|*.txt"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName <> "" Then
            FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
            PrintLine(1, TextBox2.Text, TextBox2.Text, TextBox3.Text) 'copia o texto
            FileClose(1)
        End If
    End Sub

A tua resposta deu-me uma ajuda !  :D

O teu código apenas escrevia as linhas seguidas, mas eu arranjei uma maneira de cada caixa de texto ir para uma linha diferente no ficheiro de texto, desta maneira o código final ficou assim:

        SaveFileDialog1.Title = "Guardar Relatório da Mensagem"
        SaveFileDialog1.FileName = "Relatório da Mensagem"
        SaveFileDialog1.Filter = "Ficheiros de texto(*.txt)|*.txt"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName <> "" Then
            FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
            PrintLine(1, "De : " + Lbde.Text)
            PrintLine(1, "")
            PrintLine(1, "Para : " + Lbpara.Text)
            PrintLine(1, "")
            PrintLine(1, "Assunto : " + Lbassunto.Text)
            PrintLine(1, "")
            PrintLine(1, "Menssagem : " + Lbmensagem.Text)
            FileClose(1)
            MessageBox.Show("Relatório Gravado com Sucesso !","Sucesso",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If

Obrigado pelas grandes ajudas  :);):D:):thumbsup: :thumbsup: :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

? Acho que não percebeste o código..

A ProgressBar começa a correr depois de seleccionar o directório, não é antes lol.

Percebi, mas só guarda a imagem quando a progressbar chega ao fim. É a mesma coisa. :)

Devia era estar a guardar e a progressbar ir mostrando quanto já estava concluído e quanto faltava. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Percebi, mas só guarda a imagem quando a progressbar chega ao fim. É a mesma coisa. :P

Devia era estar a guardar e a progressbar ir mostrando quanto já estava concluído e quanto faltava. :)

Quando se clica em Guardar (Depois de aberto o SaveDialog) é que a Progressbar começa a funcionar..

Rapaz, mais simples do que isto não sei explicar. E acho que é assim que deve de ser, se a Progressbar chega ao fim num jogo é porque vais passar para outra Etapa do jogo..não é durante a Progressbar :D

Quanto ao teu 2º Ponto, isso já vai dele..e isso é bastante simples, mete uma label consoante a o valor da Progressbar..dificil..

A tua resposta deu-me uma ajuda !  :D

O teu código apenas escrevia as linhas seguidas, mas eu arranjei uma maneira de cada caixa de texto ir para uma linha diferente no ficheiro de texto, desta maneira o código final ficou assim:

        SaveFileDialog1.Title = "Guardar Relatório da Mensagem"
        SaveFileDialog1.FileName = "Relatório da Mensagem"
        SaveFileDialog1.Filter = "Ficheiros de texto(*.txt)|*.txt"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName <> "" Then
            FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
            PrintLine(1, "De : " + Lbde.Text)
            PrintLine(1, "")
            PrintLine(1, "Para : " + Lbpara.Text)
            PrintLine(1, "")
            PrintLine(1, "Assunto : " + Lbassunto.Text)
            PrintLine(1, "")
            PrintLine(1, "Menssagem : " + Lbmensagem.Text)
            FileClose(1)
            MessageBox.Show("Relatório Gravado com Sucesso !","Sucesso",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If

Obrigado pelas grandes ajudas  :);):D:):thumbsup: :thumbsup: :thumbsup:

Porreiro :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
E acho que é assim que deve de ser, se a Progressbar chega ao fim num jogo é porque vais passar para outra Etapa do jogo..não é durante a Progressbar :)

Pois não, mas o jogo carrega durante a progress bar. Só te mostra no fim da progressbar. E a progressbar só acaba quando o jogo acabar de carregar. MAs certamente há aqui gente mais experiente do que eu nestas coisas, dê a sua opinião. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Chama-se PROGRESS bar porque comunica o progresso de determinado processo.

O que tens é um timer a encher uma progress bar e só quando chega ao fim é que fazes as coisas.

Parece é daqueles jogos que demoram 5 segundos a encher a progressbar e no final, nos 100% demoram 5 minutos.

Para o efeito bastava uma progressbar com Marquee e uma variável interna a controlar o tempo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora