Gracias BrunoF, eres un Crack. En pocos días montaré un circuito y esté programa me ahorrará un montón de horas.
Estoy empezando a ampliar mis conocimientos en VB6 con los libros de Anaya, pero me quedo justo. Estos ejemplos además de ser MUY PRÁCTICOS, también son muy instructivos.
Con tu permiso voy a tratar de añadirle un par de cositas que llevaba en la cabeza: -modificar el tamaño y posición de la imagen dentro del escenario y añadirle texto. Si lo consigo y sale bien lo cuento.
Una vez mas, muchas gracias y un saludo.
Hola:
Felicidades y gracias por el trabajo bruno, a ver si lo pruebo a ver como me va con proton. :mrgreen: :-/
- otra observación, tuve que usar Picture1.Refresh después de la llamada de la api para que dibujara en cada evento.
ahora intento probar como ajustar el picturebox de manera que si ya dibujé en una determinada coordenada no vuelva a tocar ese punto y dibuje el rectángulo completo en la coordenada de al lado.
For j = 0 To (7 * 13) Step 14 ' recorre 7 pixeles en pasos de 14
For i = 0 To (5 * 13) Step 14 ' recorre 5 pixeles en pasos de 14
If Picture1.Point(i, j) = vbBlack Then ' pregunta si el pixel es negro
Binario = Binario & 1
Else
Binario = Binario & 0 ' es el color del fondo
End If
Next i
Next j
Text1.Text = "int const caracter0_datos[8]={"
For i = 1 To 35 Step 5
Text1.Text = Text1.Text & " " & Mid$(Binario, i, 5)
' toma dentro de la cadena binario y agrupa en nibbles de cada pixel
Next i
Private Sub Cuadricula()
Dim Lineas As Integer
'Evitar dibujar linea en X=0 'Evitar dibujar linea en X=Picture1.Scalewidth 'se incrementa según el ancho de cada rectángulo
For Lineas = Picture1.ScaleWidth / 5 To Picture1.ScaleWidth - Picture1.ScaleWidth / 5 Step Picture1.ScaleWidth / 5
Picture1.Line (Lineas, 0)-(Lineas, Picture1.ScaleHeight), vbWhite
Next
'Evitar dibujar linea en Y=0 'Evitar dibujar linea en Y=Picture1.Scaleheight 'se incrementa según el alto de cada rectángulo
For Lineas = Picture1.ScaleHeight / 7 To Picture1.ScaleHeight - Picture1.ScaleHeight / 7 Step Picture1.ScaleHeight / 7
Picture1.Line (0, Lineas)-(Picture1.ScaleWidth, Lineas), vbWhite
Next
End Subya le agregué la grilla, con el código que posteaste y efecto que noté es que cuando coloco autoredraw=false es lo que explica la ayuda msdn, elimina el gráfico persistente, si minimizo la ventana desaparece todo lo pintado en el picturebox,
ahora cuando autoredraw=true no ví nada raro excepto que el método point falla al tomar los pixel negro y asumo que la linea me consume una unidad de pixel (ya que scalemode=3), entonces modifiqué el for anidado para vaya en pasos de a 15 (sumando el extremo del rectangulo+linea) y también esta linea (es la que está dentro de los for anidado):
(Picture1.Point(i, j) = vbBlack) Or (Picture1.Point(i, j) = linea_gris)
para que si se consigue con la linea de la cuadricula, no tenga problemas en identificar que hay un rectangulo.
eso si, tuve que llamar al procedimiento cuadricula en casi todos lados para que no se me borre.
observación: para modificar los valores de scalewidth y scaleheight, no los pude hacer directamente porque la propiedad scalemode se cambia a user en vez de mantenerse a pixel entonces lo que hice fué cambiar los valores de height y width, como hablaste varios mensajes atrás.
estoy barajando la posibilidad de 5x10, pero ello implicaría modificar las escala del picturebox el cuál cambiaría varias funciones y bueno... sigo pensando... además con 5x10 lo que se tienen son apenas 4 caracteres, pero eso quedaría para futuro.