[Resolvido] Como fazer zoom da imagem na picturebox? - Visual Basic .NET - Portugal-a-Programar
[Resolvido] Como fazer zoom da imagem na picturebox?
By Joca, February 22, 2009 in Visual Basic .NET
Aqui há alguns meses atrás criei um projecto de teste, no qual fazia o zoom da imagem numa picturebox à qual tinha adicionado um painel.
Infelizmente não consigo localizar esse projecto.
Salvo erro esse zoom era feito clicando na imagem, através do evento click da picturebox.
O valor a aumentar era através de um número positivo escrito na textbox. O valor a reduzir seria obtido quando se inseria valores negativos.
Alguém me pode dar uma luzinha pois, já não tenho a certeza como fiz.
Penso que era só exibir as scrollbars do painel com autoscroll como true.
E, na picturebox o size mode era de autosize.
http://www.bobpowell.net/zoompicbox.htm
'Fiquei com algumas dúvidas nesse link que disponibilizou... Será que realmente é melhor deixar de usar picturebox?!
'Entretanto, deparei-me com outra informação no link que indico a seguir.
'O processo de utilzação do programa é escrever o zoom que se pretende e, depois clicar no botão.
'No entanto, se faço, por exemplo:
'- escrevo 100 na textbox e clico no botão;
'- e, depois escrevo 1000 e clico no botão...o programa pára, momentaneamente, durante o processo de aumento da imagem. É esta uma das razões para desistir das pictureboxes?!
'Este princípio é errado? Uma barra de zoom seria melhor para este efeito?
'http://www.dreamincode.net/code/snippet2372.htm
Public Function ZoomImageFunction(ByVal img As System.Drawing.Image, ByVal ZoomValue As Int32) As System.Drawing.Image
converted.InterpolationMode = InterpolationMode.HighQualityBicubic
PictureBox1.Image = ZoomImageFunction(Image.FromFile("c:\NomeDaImagem.bmp"), TextBox1.Text)
If Char.IsDigit(e.KeyChar) And TextBox1.SelectionStart <> 0 Then
>> Uma barra de zoom seria melhor para este efe
Leva sempre algum tempo a carregar ... mas talvés possas usar outra solução como um numericupdown ou outro.
E, esta "sensação" de que o programa não vai executar a tarefa...
Isto é, como evitar a "ideia" que o utilizador vai ter, de que o programa "bloqueou"?
Será que deveria implementar uma label a informar "em execução", e recuso a aceitação de qualquer tarefa adicional (como um clique do rato em qualquer sítio da form1), enquanto a tarefa não estiver completa?
É possível fazer algo assim, ou então, outra coisa qualquer, que evite esta "ideia" de "paragem" do programa?
podes sempre por isso numa thread... assim... o utilizador vai ser informado que isso está a ser processado... e não fica a tentar mexer no form.. para depois o utilizador ficar com a sensação que o programa crashou!