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

andronikus

BufferedGraphics class - O que é que está mal?

3 mensagens neste tópico

Boas,

O meu objectivo principal é fazer o scroll de uma imagem sempre que esta apresente uma dimensão superior à minha PictureBox. Para tal queria recorrer a buffers ( BufferedGraphics e BufferedGraphicsContex classes). Para perceber estas classes decidi primeiro fazer um pequeno exemplo, que consiste na criação de um buffer associado à Form principal, desenho de uma recta e afixação do buffer na Form.

 private void form1_Load(object sender, EventArgs e)
        {
            BufferedGraphicsContext currentContext;
            BufferedGraphics myBuffer;

            currentContext = BufferedGraphicsManager.Current;

            currentContext.MaximumBuffer = new Size(this.Width + 1, this.Height + 1);
            
            myBuffer = currentContext.Allocate(this.CreateGraphics(), new Rectangle(0,0,this.Width,this.Height));

            myBuffer.Graphics.DrawLine(Pens.White, 10, 10, 50, 50);

            myBuffer.Render(this.CreateGraphics());

            myBuffer.Dispose();
        }

Este é o código que utilizo para o efeito.... Quando corro o programa não me aparece linha nenhuma na Form, mas também não me dá nenhum erro....

O que é que está aqui incorrecto?  :(

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fogo és doido!

eu sugiro o método do facil-desenrasca:

poe essa PictureBox num painel, tendo esse painel o tamalho que quizeres por defeito.

quando fores ler a imagem para a PictureBox:

caso esta fique com o tamanho inferior ao tamanho do painel > poes a PictureBox com o tamanho igual ao da imagem e centras-la ao meio do painel.

caso esta fique com o tamanho maior ao tamanho do painel > pões a PictureBox com o tamanho do painel centrada a meio na mesma.

a imagem põe-na sempre em stretch para quando fizeres scroll á PictureBox, esta aumentar consoante isso.

depois crias uma scrollbar que em cada vez que andares na scrool para a aumentar a imagem, esta soma 2px em altura e 2px em comprimento à tua PictureBox, e anda -1px em X e -1px em Y(na localização)

para moveres para o lado direito/esquerdo, cima/baixo é mais complicado, tens que fazer somas e isso já é mais complicado de explicar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol

Isso foi o que eu já fiz em VB6... Mas quero utilizar isto para um programa de aquisição de imagem continua. O que me acontece é que com essa solução obtenho flicker da imagem. Utilizando a classe BufferedGraphics consigo eliminar isso.

Mais... O código que coloquei está correcto... só não deve estar é no handler da form. Coloquei noutro local e funcionou...  Vou continuar a "partir pedra" nesta classe pois parece-me potente...

Obrigado Tsunamy_boy pela tua resposta e sugestão  :D

Cumps,

Andronikus

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