CLR: .Net / Mono / Boo / Otros CLR > VB .NET
codigo para poder ver el numero indice de una imagen randomi
ESTEFY:
Holap, gracias `por tenerme paciencia..... copie tu codigo en un nuevo proyecto pero este leia aparte de la imagen q le daba click tambien la de alado..... sabes me puse ha estar moniando ..y solo tenia este error q no van los iguales en la codificación del detector de imagenes q me diste.....jajja lo logramos......muchas gracias he.....Realmente sos lo maximo!!! :P
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
For Each k As PictureBox In pb
If e.X >= k.Left And e.X <= k.Left + k.Width Then
If e.X >= k.Top And e.Y <= k.Top + k.Height Then
MsgBox(k.Tag)
End If
End If
Next
End Sub
End Class
Oye una pregunta mmm...queria ajustarle el codigo para q funcionara mediante matrices; la matrices es cuadratica....pero no sé cual es el error....mmmmm...toma como limite para leer las imagenes de arriba de diagonal principal y las lee de corrido..osea le doy click a la imagen de la ultima columna y las lee de corrido.... por fis hechale le un vistazo...para q me digas cual es el error..aki te dejo el codigo q he hecho...gracias de antemano....espero no cansarte...
Public Class Form1
Private PB As New List(Of PictureBox)
Dim m(100, 100) As Integer
Dim rnd As New Random
Private Sub ING_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ING.Click
Dim i, j, b, k, c, f, y, t, x As Integer
Dim pict As PictureBox
b = Val(lim.Text)
If b Mod 2 <> 0 Then
MsgBox(" INGRESAR NUMERO PAR")
lim.Text = " "
lim.Focus()
End If
If b <= 10 Then
D1.ColumnCount = b
D1.RowCount = b
For f = 0 To b - 1
For c = 0 To b - 1
m(f, c) = 0
D1.Columns.Item(c).Width = 25
Next
Next
If b Mod 2 = 0 Then
t = (b * b) / 2
End If
y = 15
k = 40
For f = 0 To b - 1
For c = 0 To b - 1
Randomize()
x = rnd.Next(1, (t + 1))
m(f, c) = x
Next
Next
y = 10
k = 15
For i = 0 To b - 1
For j = 0 To b - 1
D1.Item(j, i).Value = m(i, j)
x = Val(m(i, j))
pict = New PictureBox
pict.Image = System.Drawing.Image.FromFile("f:3image" + Trim(Str(x)) + ".jpg")
pict.Name = "PIC_IMAGE" & CStr(x)
pict.Width = 35
pict.Height = 35
pict.SizeMode = PictureBoxSizeMode.StretchImage
pict.Left = y
pict.Top = k
y += 50
pict.Tag = x
pict.Enabled = False
Me.Controls.Add(pict)
PB.Add(pict)
pict = Nothing
Next
y = 15
k += 50
Next
Else
MsgBox("NUMEROS MENOR A 10")
lim.Text = " "
lim.Focus()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
For Each s As PictureBox In PB
If e.X > s.Left And e.X <= s.Left + s.Width Then
If e.X > s.Top And e.Y < s.Top + s.Height Then
MsgBox(s.Tag)
End If
End If
Next
End Sub
End Class
Nebire:
--- Cita de: "ESTEFY" ---Oye una pregunta mmm...queria ajustarle el codigo para q funcionara mediante matrices; la matrices es cuadratica....pero no sé cual es el error....mmmmm...toma como limite para leer las imagenes de arriba de diagonal principal y las lee de corrido..osea le doy click a la imagen de la ultima columna y las lee de corrido.... por fis hechale le un vistazo...para q me digas cual es el error..aki te dejo el codigo q he hecho...gracias de antemano....espero no cansarte...
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
For Each s As PictureBox In PB
If e.X > s.Left And e.X <= s.Left + s.Width Then
If e.X > s.Top And e.Y < s.Top + s.Height Then
MsgBox(s.Tag)
End If
End If
Next
End Sub
End Class
--- Fin de la cita ---
El error es de transcripción, ya lo cometes también al inicio del mensaje, de entrada pensé que yo lo puse mal y por eso lo copiaste mal, pero no, yo lo he puesto bien... donde remarco e.x debes cambiarlo por e.y... la primera línea detecta horizontalmente, la 2ª detecta verticalmente....
De paso te comento algunos cambis.... después de hallar una deteción puesto que no solapas imágenes, no es necesario seguir comprobando el resto elementos dentro de la colección por tanto debajo de la línea ' MsgBox(s.Tag)' sería útil añadir un 'exit for' , pensé que tú misma te darías cuenta y acabarías por ponerlo, pero parece que no te has parado lo suficiente en 'mirar como trabaja'.
El otro cambio que te sugiero es que la matriz no la declares con 100 elementos por cada dimensión pués al final reservas memoria para 10.000 elementos aunque sólo uses 36. Entonces sustituye la línea : 'Dim m(100, 100) As Integer' por 'Dim m( , ) As Integer' y consecuentemente después de la línea: 'If b <= 10 Then' añade esta otra: ' ReDim m(0 To b - 1, 0 To b - 1)' ...
--- Cita de: "ESTEFY" ---....espero no cansarte...
--- Fin de la cita ---
bueno, lo que realmente me cansa es la mala expresión de los problemas.
Por ejemplo ignorar ciertos detalles necesarios para entender el propio mensaje, por ejemplo hubiera sido útil indicar que 'D1' se refiere a un Datagridview , que 'ing' es un botón y que 'lim' es un textbox, sería más adecuado o indicar eso o aunque sea sólo en el foro sustituir lim por textboxLim ing por buttonIng, y D1 por DgridvD1 o similar así no necesitas especificar que son y yo no pierdo tiempo en intentar ver qué es y qué intentas hacer...
Y lo otro que especialmente me cansa es el no hacer uso de las etiquetas de code para dar formato en el editor. Todo lo que hay que hacer es pulsar (cuando redactas el mensaje9 pulsar en el botón que indica 'Code" que sale así (sin los espacios aquí puestos) [ c o d e ] [ / c o d e ] el código lo pones en medio de las 2 etiquetas y ya queda indentado como en el editor de visual Studio, además si la 1ª etiqueta la modificas así: [ c o d e =vb] entonces además queda automáticamente coloreado, lo que hace legible el código. Me resulta cansado leer código sin darle formato, de hecho suele ser la razón por la a veces no responda algunos posts. Normalmente cedo más tolerancia a los nuevos, pero por favor en el futuro usa dichas etiquettas...
p.d.: adjunto una imagen para que entiendas a que me refería en el anterior post con aquello de las imágenes repetidas...(haciendo uso de este último código). Agranda la imagen y observa como las imágenes etiquetadas como 1 y 14 están repetidas varias veces..(aparte de otras).
[img=http://img401.imageshack.us/img401/4854/dibujouj5.png]
ESTEFY:
Holap...oye muchas gracias por decirme cuales fueron mis errores si me hubieras dicho antes eso de las etiquetas, realmente no sabia para q servian mismo...pero ya veo q dan mucha ayuda a parte de una mejor presentación....mm..y tienes mucha razón eso de los name de los botones, ustedes no son adivinos para saber q clase de boton se esta usando....pero cada día se aprende algo nuevo....muchas gracias por tu enorme ayuda......me alegro mucho de q una persona como tu me haya ayudado y tomare muy encuenta para otra vez tus recomendaciones....nuevamente muchas gracias.... :P :D....bueno hasta en otro momento..bye...
Navegación
[*] Página Anterior
Ir a la versión completa