Y aqui os dejo el codigo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Public Class Form1 Dim Imagen As String Dim Pic As Bitmap Dim TamañoX As Double Dim TamañoY As Double Dim TrealX As Double Dim TrealY As Double Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim [OF] As New OpenFileDialog [OF].ShowDialog() Imagen = [OF].FileName Pic = New Bitmap(Imagen) Me.PictureBox1.Image = PIC TamañoX = Pic.Width TamañoY = Pic.Height 'Proporcion del pixel en referencia a el picturebox TrealX = TamañoX / PictureBox1.Size.Width TrealY = TamañoY / PictureBox1.Size.Height End Sub Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseClick End Sub Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown If e.Button.Left Then Dim ColorPixel As Color = Pic.GetPixel(CInt(e.X * TrealX), CInt(e.Y * TrealY)) Me.Panel1.BackColor = ColorPixel Me.Color.Text = "A:" & ColorPixel.A & " R:" & ColorPixel.R & " G:" & ColorPixel.G & " B:" & ColorPixel.B End If End Sub Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove 'If Not PictureBox1.Image Is Nothing Then ' Dim ColorPixel As Color = Pic.GetPixel(CInt(e.X * TrealX), CInt(e.Y * TrealY)) ' Me.Panel1.BackColor = ColorPixel ' Me.Color.Text = "A:" & ColorPixel.A & " R:" & ColorPixel.R & " G:" & ColorPixel.G & " B:" & ColorPixel.B 'End If End Sub |
Hola Jonoxet, perdona por np haberte contesttado antes, he estado muy liado y no he tenido tiempo para esto.
Este es el codigo de mi pequeño juego, no es gran cosa, pero por algo hay que empezar:
Imports System.IO
Public Class Form1
Dim a As Long
Public MiTexto As String
Dim PosX1() As Long
Dim PosY1() As Long
Dim PosX2() As Long
Dim PosY2() As Long
Dim Signo() As String
Dim Cuantos As Long
Dim b As Long
Dim Ultimo As Long
‘:::Ruta donde crearemos nuestro archivo txt
Dim ruta As String = “C:\Users\jjara\Documents\Visual Studio 2010\Projects\Dibujar Lineas\”
‘:::Nombre del archivo
Dim archivo As String = “Circuito.txt”
Dim x As Integer
Dim y As Integer
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
x = 350
y = 150
PcBoxBola.Location = New Point(x, y)
a = 0
b = 0
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
mover()
End Sub
Sub LeerArchivo()
‘:::Creamos nuestro objeto de tipo StreamReader que nos permite leer archivos
Dim leer As New StreamReader(ruta & archivo)
Try
‘:::Indicamos mediante un While que mientras no sea el ultimo caracter repita el proceso
While leer.Peek -1
‘:::Leemos cada linea del archivo TXT
Dim linea As String = leer.ReadLine()
‘:::Validamos que la linea no este vacia
If String.IsNullOrEmpty(linea) Then
Continue While
End If
MiTexto = linea
End While
leer.Close()
Catch ex As Exception
MsgBox(“Se presento un problema al leer el archivo: ” & ex.Message, MsgBoxStyle.Critical, “:::Aprendamos de Programación:::”)
End Try
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
b = 0
Dim a As Long
LeerArchivo()
Cuantos = Microsoft.VisualBasic.Left(MiTexto, 3)
ReDim PosX1(Cuantos)
ReDim PosY1(Cuantos)
ReDim PosX2(Cuantos)
ReDim PosY2(Cuantos)
ReDim Signo(Cuantos)
PosX1(0) = 600
PosY1(0) = 70
PosX2(0) = 650
PosY2(0) = 70
For a = 1 To Cuantos
PosX1(a) = PosX2(a – 1)
PosY1(a) = PosY2(a – 1)
Signo(a) = Mid(MiTexto, 7 + (10 * (a – 1)), 1)
PosX2(a) = Mid(MiTexto, (4 + (10 * (a – 1))), 3) + PosX2(a – 1)
If Signo(a) = “+” Then
PosY2(a) = Mid(MiTexto, (8 + (10 * (a – 1))), 3) + PosY2(a – 1)
ElseIf Signo(a) = “-” Then
PosY2(a) = PosY2(a – 1) – Mid(MiTexto, (8 + (10 * (a – 1))), 3)
End If
Ultimo = PosX2(a)
Next a
Timer1.Enabled = True
End Sub
Private Sub mover()
‘NUEVO
Dim myGraphics As Graphics = Me.CreateGraphics
Dim myPen As Pen
myPen = New Pen(Brushes.DarkMagenta, 1)
myGraphics.DrawLine(myPen, 10, 10, 100, 10)
‘FIN NUEVO
Dim posi1 As Long
Dim posi2 As Long
Dim posi3 As Long
Dim posi4 As Long
Dim a As Long
Me.CreateGraphics.Clear(Color.Azure)
PictureBox2.CreateGraphics.Clear(Color.Azure)
If b < Ultimo Then
For a = 0 To Cuantos
posi1 = PosX1(a)
posi2 = PosY1(a)
posi3 = PosX2(a)
posi4 = PosY2(a)
DetectarSalida()
PictureBox2.CreateGraphics.DrawLine(Pens.Black, posi1 – b, posi2, posi3 – b, posi4)
PictureBox2.CreateGraphics.DrawLine(Pens.Black, posi1 – b, posi2 + 150, posi3 – b, posi4 + 150)
Next (a)
b = b + 25
End If
End Sub
Private Sub DetectarSalida()
Dim PosicionX As Long
Dim PosicionY As Long
'Dim color As Long
PosicionX = PcBoxBola.Location.X
PosicionY = PcBoxBola.Location.Y
'color = Form1.PointToCliPosicionXent(color.
' color = PixelColor(PosicionX, PosicionY)
End Sub
Private Sub CmdBajar_Click(sender As System.Object, e As System.EventArgs) Handles CmdBajar.Click
y = y + 10
PcBoxBola.Location = New Point(x, y)
End Sub
Private Sub CmdSubir_Click(sender As System.Object, e As System.EventArgs) Handles CmdSubir.Click
y = y – 10
PcBoxBola.Location = New Point(x, y)
End Sub
Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs)
End Sub
End Class
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
En el formulario hay dos picturebox y tres botones, tambien se necesita un fichero de testo en el que está las coordenadas de la "cueva", el contenido del fichero es el siguiente:
007100+030999100+030999150-050999300+000999400-060999200+000999200+070
Esta solo en una lineas del fichero de testo, al que lo llamo Circuito.txt.
Muchas gracias por tu tiempo y un saludo.
Hola jonoxet, muchas gracias por este cursito, es muy interesante, te queria hacer una pregunta, yo tengo un picturebox en el cual dibujo lineas y creo una especie de cueva en el que entre dons lineas una arriba y otra abajo, tengo una imagen que la muevo, y quisiera saber como hacer para detectar si me choco con el suelo o el techo de la cueva, en VB6.0, hay una funcion en la que hago un barrido verticalenete por el picturebox y detecto donde está la linea detectando el color de los limites de la cueva y si mi imagen esta en la misma posición de la linea pues detecto la colisión, pero con VB.NET no se como hacerlo, no se detectar los limites de la cueva, me puedes ayura en esto?.
Muchas gracias.
Si claro, Pasame el codigo y te ayudo, hice algo parecido hace tiempo , lo voy a buscar por si te ayuda, lo mas facil es detectar por color el pixel superior e inferior del objeto que se mueve, si el color del pixel es igual al que se establece, el objeto no se pude mover.
Para ello deberas obtener las coordenadas del objeto que se mueve y recoger con la function, seria algo asi
Dim pb As New PictureBox
Dim img As New Bitmap(pb.Image)
img.GetPixel(X_posicion – 1, Y_posicion – 1) ‘ARIBA IZQUIERDA
img.GetPixel(X_posicion – 1, Y_posicion + loquemideenpixeleselmuñecodeY) ‘ABAJO IZQUIERDA
img.GetPixel(X_posicion + loquemideenpixeleselmuñecodeX, Y_posicion – 1) ‘ARRIBA DERECHA
img.GetPixel(X_posicion + loquemideenpixeleselmuñecodeX, Y_posicion + loquemideenpixeleselmuñecodeY) ‘ABAJO DERECHA
.