ALTERNAR IMAGEM DENTRO DE UMA PICTUREBOX

JONATHANSTECKER 11/11/2010 22:08:36
#357262

Boa noite caros Colegas,

Como o próprio tópico já diz, gostaria de alternar uma imagem dentro de um PictureBox.
Tenho essa imagem acima, resolução 32x128 onde tem os 4 estados do botão.
Quero ir alternando conforme os eventos no PictureBox. Click, MouseMove, MouseLeave

Obs.: Meu PictureBox está no tamanho 32x32, sendo que é exatamente 1/4 da imagem.
LUIZCOMINO 11/11/2010 22:36:07
#357263
bom no vb6 é assim :

Picture=LoadPicture ([Ô]C:\VB program\Images\grape.gif[Ô]).
JONATHANSTECKER 11/11/2010 22:44:57
#357264
Luiz, carregar a imagem é tranquilo! Mas agradeço a disposição.

O que eu pretendo é, ao iniciar o sistema estar somente a primeira parte da imagem visível.
Quando eu estiver com o mouse em cima do PictureBox aparecer somente a terceira parte da imagem...
E assim com outros eventos também.
RODRIGOFERRO 23/02/2011 12:33:51
#366343
Resposta escolhida
Amigão eu prometi a voce que ia ver isso né ?
ca estou, entao seguinte, com base em uma forma de cortar a imagem em modo de execução e catar os pedaços e tacar na picture consegui montar o seu rotacionador..


Imports System.IO

Public Class Form1

Private Shared Function cropImage(img As Image, cropArea As Rectangle) As Image

[ô]Cortar a Imagem em tempo Real
Dim bmpImage As New Bitmap(img)
Dim bmpCrop As Bitmap = bmpImage.Clone(cropArea, bmpImage.PixelFormat)
Return DirectCast(bmpCrop, Image)

End Function

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

[ô]Eventos
Dim Secao As New Rectangle(New Point(0, 0), New Size(PictureBox1.Width, PictureBox1.Height))
PictureBox1.Image = cropImage(PictureBox2.Image, Secao)

End Sub

Private Sub PictureBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

[ô]Eventos
Dim Secao As New Rectangle(New Point(64, 0), New Size(PictureBox1.Width, PictureBox1.Height))
PictureBox1.Image = cropImage(PictureBox2.Image, Secao)

End Sub

Private Sub PictureBox1_MouseEnter(sender As Object, e As System.EventArgs) Handles PictureBox1.MouseEnter

[ô]Eventos
Dim Secao As New Rectangle(New Point(32, 0), New Size(PictureBox1.Width, PictureBox1.Height))
PictureBox1.Image = cropImage(PictureBox2.Image, Secao)

End Sub

Private Sub PictureBox1_MouseLeave(sender As Object, e As System.EventArgs) Handles PictureBox1.MouseLeave

[ô]Eventos
Dim Secao As New Rectangle(New Point(0, 0), New Size(PictureBox1.Width, PictureBox1.Height))
PictureBox1.Image = cropImage(PictureBox2.Image, Secao)

End Sub

Private Sub PictureBox1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

[ô]Eventos
Dim Secao As New Rectangle(New Point(96, 0), New Size(PictureBox1.Width, PictureBox1.Height))
PictureBox1.Image = cropImage(PictureBox2.Image, Secao)

End Sub
End Class


Segue SS



Veja se serve do jeito que eu fiz, ai tu pode criar uma DLL de uma picturebox que faça isso, bom tem muitas formas de fazer isso ficar mais facil e sei que voce conhece algumas.
Te passo a bola então, dê um grito qualquer coisa.. Abraços
JONATHANSTECKER 23/02/2011 12:59:53
#366354
Tinha que ser né! Sempre o mesmo!

Simplesmente Perfeito Rodrigo! 100% como eu precisava.

Criei um componente onde defino nas propriedades dele qual parte da imagem estará conforme os eventos no PictureBox e boa!
Eu só retirei o segundo PictureBox e recortei direto da própria imagem usando Image.FromFile.

Ficou simplesmente perfeito!
Hoje a noite vou dar uma ajeitada no código com mais calma e fazer os comentários nele.
Em seguida já encaminho para você esse componente.

Novamente venho a agradecer esse grande colaborador do VBMania que está sempre a disposição.
Quero ver como vou poder te recompensar por todas as suas ajudas já prestadas.

Abraço amigão!
RODRIGOFERRO 23/02/2011 13:16:06
#366359
Rapaz fico muito feliz em ajudar, as vezes isso fica rodando na minha cabeça dias e dias, hoje ao ler um tópico do vbmania tive um estalo e saiu isso =]
tua gratidão já me recompensa amigão.

Abraços e vamo que vamo, porque a vida não para pra esperar ninguem =]
RODRIGOFERRO 23/02/2011 13:54:25
#366365
Ah, depois posta isso la no blog.. Abraços...
JONATHANSTECKER 23/02/2011 14:25:39
#366367
Beleza! Pode deixar!
Tópico encerrado , respostas não são mais permitidas