none
Problemas com meu TrackBar RRS feed

  • Pergunta

  • Bom dia !

    Estou fazendo um programa ImageCropping. Ele faz o seguinte :
    Tenho uma imagem qualquer, dai eu seleciono a área que eu desejo recortar. A área
    selecionada vai para uma picture box de visualização. Após todo esse processo salvo a
    imagem recortada. Ele funciona perfeitamente, mas gostaria que a TrackBar funcionasse
    para eu pode dar um zoom na imagem recortada. O problema é o seguinte...havia feito
    esse programa em VB.Net, mas ele tem que funcionar em C#.Net... O método é o seguinte :


    Método em VB :
    Dim tempCnt As Boolean        
    Dim bm_dest As Bitmap
    Dim bm_source As Bitmap
    Dim i As Int16 = 1

    'método para o trackingBar
        Private Sub resizingTrackBar_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resizingTrackBar.ValueChanged
            Try

                Dim scale_factor As Integer
                Dim img1 As New PictureBox

                scale_factor = Integer.Parse(resizingTrackBar.Value)
                img1.Image = cropBitmap
                bm_source = New Bitmap(img1.Image)
                bm_dest = New Bitmap( _
                    CInt(bm_source.Width * scale_factor), _
                    CInt(bm_source.Height * scale_factor))

                Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)

                gr_dest.DrawImage(bm_source, 0, 0, bm_dest.Width + i, bm_dest.Height + i)

                PreviewPictureBox.Image = bm_dest         'PreviewPictureBox é o nome da picture box de visualização

                tempCnt = True
            Catch ex As Exception

            End Try
        End Sub
    #End Region


    ----

    Método em C# :


    //Declaração de variáveis
            bool tempCnt;              
            Bitmap bm_dest;
            Bitmap bm_source;
            int i = 1;

    //Método responsável pelo movimento do TrackBar e pelo aumento da imagem
            private void resizingTrackBar_ValueChanged(object sender, EventArgs e)
            {
                try
                {
                    int scale_factor;
                    PictureBox img1 = null;  

                    scale_factor = resizingTrackBar.Value;
                    img1.Image = cropBitmap;      // cropBitmap é um objeto da classe Bitmap que recebe o width e o Heigt da imagem
                    bm_source = new Bitmap(img1.Image);
                    bm_dest = new Bitmap(bm_source.Width * scale_factor, bm_source.Height * scale_factor);

                    Graphics gr_dest = Graphics.FromImage(bm_dest);
                    gr_dest.DrawImage(bm_source, 0, 0, bm_dest.Width + i, bm_dest.Height + i);
                    PreviewPictureBox.Image = bm_dest;
                    tempCnt = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            } // Fecha método resizingTrackBar_ValueChanged


    ---

    Dá o seguinte erro quando eu movimento a seta do TrackBar : " Referência de objeto não definida para uma instância de um objeto".

    Não sei o que pode ser isso !

    Obrigada pela atenção !

    Abraços.

















    quinta-feira, 17 de julho de 2008 15:28

Todas as Respostas

  • Em nenhum momento vc instancia o cropBitmap.

    Outra coisa é que o problema não esta no trackbar, faça um debug e veja aonde extamente o erro acontece.

    Vc seta o PictureBox pra null, qual é a ideia aqui, aparentemente vc não esta usando a mesma em nenhum outro lugar

    quinta-feira, 17 de julho de 2008 17:14
  • Eu instancio o cropBitmap sim, porém em outra parte do programa;
    Coloquei img como null devido a um erro que dava ao compliar, ou seja, apenas para inicializar a variável como "vazia"...
    Ao pesquisar no google, a solução que eu vi foi essa..

    Obg,
    vou fzr mais testes.
    quinta-feira, 17 de julho de 2008 17:42