Autor
|
Tema: programa para dibujar en windows xD (Leído 5,862 veces)
|
vivachapas
Desconectado
Mensajes: 612
|
bueno estuve viendo como trabjar con img... como en un picture dibujar en cierto pixel... y ese tipo de cosas q nunca habia hecho.. (la idea era tratar de hacer un juego) pero para eso falta todavia... hice un par de programas "bobos" pero les dejo este q es el mas entretenido y muy simple para quien quiera aprender algo mas... http://rapidshare.com/files/85333855/Capturas_de_pantalla.rarel codigo es 100% mio.. no se si laguien ya hizo algo al estilo de este xD SALUDOS P/D: hice un programa tipo Paint.. pero no se como guardar lo q dibujo en el picture box... x favor si alguno me puede explicar o darme un manual donde se hacen este tipo de cosas.. ya q lo q fui haciendo fue todo probrando xD ah y como se si ese pixel ya tiene algun color... otra pregunta alguno tiene un code de esos jueguitos viejo...(de los primeros) en el q un pixel es un autito... y esta siempre quiero pero se mueve la pista... o algun code asi para ponerme a investigar.. en google no encuentro xD
|
|
« Última modificación: 21 Enero 2008, 05:40 am por vivachapas »
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
Nunca he trabajado con algo así pero viéndolo por encima ¿porque no capturarlo como hicisteis en el evento load y actualizarlo? Private Sub menuGuardar_Click() foto.SetSamplingFrequencies 2, 2, 2, 2, 2, 2 foto.Quality = 100 foto.SampleScreen If ExisteArchivo("c:\Salvado.jpg") = True Then _ Kill "c:\Salvado.jpg" 'Necesario eliminarlo, sino no salva :-[ foto.SaveFile ("c:\Salvado.jpg") 'Lo vuelvo a cargar, para verificar que guardo, ¡pero no es necesario! Picture1.Picture = LoadPicture("c:\salvado.jpg") End Sub
Private Sub menuSalir_Click() Unload Me End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = 2 Then 'Si se presiono el boton derecho del mouse PopupMenu Menu 'Esquema del menu '--------------------------- 'Menu --> Menu 'Guardar --> menuGuardar 'Salir --> menuSalir '--------------------------- End If End Sub
'Esta es la función más sencilla para detectar la existencia de un archivo Public Function ExisteArchivo(Archivo As String) As Boolean ExisteArchivo = IIf(Dir$(Archivo) = "", False, True) 'Devolverá false, si Dir$ no encuentra el archivo especificado End Function
Con un PopupMenu con las opciones guardar y salir, lo demás es... ¡claro! se podria ahorrar código creando una rutina para la captura de pantalla, y así llamarla cada vez que se necesite, en el load y en guardar como es este el caso ¡por ejemplo!. Por el momento no os puedo seguir ayudando por falta de tiempo, después pruebo lo demás y si lo deseáis os sigo ayudando. Pd: tambien seria necesario usar commondialog para guardar, y así no sustituir siempre la captura anterior. ¡S4lu2!
|
|
« Última modificación: 22 Enero 2008, 17:45 pm por C@ss¡@n¡ »
|
En línea
|
|
|
|
Chefito
|
Nas compas. La verdad es que os llevo leyendo algún tiempo esporadicamente y es la primera vez que intento ayudar. Espero que sirva de algo mi ignorancia. Mira...respecto a lo de saber el color de un pixel en un objeto picturebox mira lo que pone el msdn: Devuelve, como un valor de tipo Integer Long, el color rojo-verde-azul (RGB) delpunto especificado de un objeto Form o un control PictureBox. No aceptaargumentos con nombre. Sintaxis objeto.Point(x, y) La sintaxis del método Point consta de las siguientes partes: Parte Descripción objeto Opcional. Unaexpresión de objeto que da como resultado un objeto de la lista Se aplica a. Si se omite objeto, se supone que el objeto es el objeto Form que tenga elenfoque. x, y Requerido. Valores de precisión simple que indican las coordenadas horizontal (eje x) y vertical (eje y) del punto según la propiedad ScaleMode del objeto Form o el control PictureBox. Deben colocarse entre paréntesis. Comentarios Si el punto definido por las coordenadas x e y está fuera del objeto, el método Point devuelve -1. Vamos...que sería color=picturebox1.point(x,y). Por supuesto tendrías que tener la propiedad Scalemode del objeto picturebox igual a vbpixels o 3 para que la unidad de medida de las coordenadas fuesen pixeles. Te remiendo que utilices esto, ya que el vb nos lo facilita. Pero para aportar más, también está la api getpixel: Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Esta api también devuelve el color del pixel del objeto. En hdc tendrías que poner picturebox1.hdc y en x e y pues ya sabes . Para hacer juegos te recomiendo que empices mirandote las apis de la libreria gdi32, que son de manejo de gráficos. Luego si te quieres meter en un embolado, mirate la libreria de, por ejemplo, los directX, aunque hay por ahi librería más intuitivas (creo recordar que en su día de los que más me gusto fue revolution3d por ejem): http://www.revolution3d.net/cms/index.php?option=com_frontpageAunque no lo toqué apenas. Pero lo que te digo, si te quieres meter en camisa de once baras, te calientas el coco con la api de directx y punto, que los directx estas instalados en todos los win . Y sobre juegos en vb.....pues en su día si había por la web, busca que seguro que encuentras. Mira en esta pagina: http://www.planet-source-code.com/vb/default.asp?lngWId=1En la parte de abajo verás dos apartados que pueden que te interesen: Games y Graphics. Busca. Había un juego parecido al arkanoid hecho totalmente en vb tirando a tope de apis llamado ArkX. Buscalo, es bastante interesante. Yo mismamente hace años, intenté hacer el típico juego de las dos raquetas y la pelota (el de la atari 2600 ). Al final casi lo acabé. Está por ahí perdido, pero si te interesa lo intento buscar y mandar. Tiene fallos pero la programación es bastante facil de entender. Y si os interesa pego un curso de metodos gráficos en vb6 (solo sus funciones, procedimientos y propiedades, nada de apis) que hace tiempo bajé de una pagina. Bueno, espero haber ayudado en algo. A ver si vuelvo a programar algo. P.D. Si quieres hacer juegos, a lo mejor te gustaría saber que hay lenguajes especificos para eso, lo mismo te interesan (Ejem. DarkBasic, BlitzBasic). Yo mismo tuve una pequeña época de Game Dev Studio . Pero si te pones con vb y alguna librería puedes hacer maravillas .
|
|
|
En línea
|
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada
|
|
|
vivachapas
Desconectado
Mensajes: 612
|
chefito muchas gracias x la info! ya la voy a leer mas detenidamente... y C@ss¡@n¡... la programa q yo me referia es otro... mira pongo el code tb asi lo ven... y lo q quiero es guardar lo q dibujo en el picturebox... http://rapidshare.com/files/85477201/Dibujos.raren ese proyecto es donde quiero guardar el archivo... SALUDOS
|
|
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
C@ss¡@n¡... la programa q yo me referia es otro... ¡Ups! en ese caso mirad esto: Private Sub CmdGuardar_Click() With CommonDialog1 .DialogTitle = "Guardar el archivo" .Filter = "Archivos BMP|*.bmp|Archivos JPG|*.bmp|Todos|*.*" .ShowSave If .FileName = "" Then MsgBox "No se especificó ningún nombre", vbCritical End If Picture1.Picture = Picture1.Image SavePicture Picture1, .FileName End With End Sub
Private Sub Form_Load() Picture1.AutoRedraw = True End Sub Implementa eso a tu proyecto y seguro que funciona, no olvides el AutoRedraw del PictureBox a True es fundamental. Bueno... ¡S4lu2!
|
|
|
En línea
|
|
|
|
Chefito
|
Un pequeño aporte para cuando canceles o cierres el cuadro de dialogo no se grabe la imagen: Private Sub CmdGuardar_Click() With CommonDialog1 .DialogTitle = "Guardar el archivo" .Filter = "Archivos BMP|*.bmp|Archivos JPG|*.bmp|Todos|*.*" .ShowSave If .FileName = "" Then MsgBox "No se especificó ningún nombre", vbCritical End If If not(.CancelError) then SavePicture Picture1.Image, .FileName End With End Sub
Private Sub Form_Load() Picture1.AutoRedraw = True End Sub
|
|
|
En línea
|
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada
|
|
|
Chefito
|
Por cierto, otro apunte. Si quieres que no se te produzcan esos espacios a causa de utilizar el pset utiliza el line con alguna modificación en tu programa. Según me dijo un amigo sabio en vb hace mucho tiempo, los programas de dibujo hacen esto para no dejar espacios. Pon esto en tu código: Declara esto: Dim X1 As Integer, Y1 As Integer Y sustituye los procedimientos siguientes: Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Picture1.PSet (X, Y), Color X1 = X Y1 = Y End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static X2 As Integer, Y2 As Integer If Button = 1 Then X2 = X Y2 = Y Picture1.Line (X1, Y1)-(X2, Y2), Color X1 = X2 Y1 = Y2 End If End Sub Quita el procedimiento Picture1_MouseUp que no sirve para nada Si no entiendes algo dilo....si no soy yo alguien te lo aclarara.
|
|
|
En línea
|
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada
|
|
|
vivachapas
Desconectado
Mensajes: 612
|
muchas gracias x los codes.. en serguida los pruebo... el de chefito no me funciona gracias de todos modos SALUDOS
|
|
|
En línea
|
|
|
|
Chefito
|
Mmmmmmm.....como que no te funciona? Pero si te lo di mascado! Haber sustituye la declaración tuya del principio: Dim Color As ColorConstants por Dim Color As ColorConstants, X1 As Integer, Y1 As Integer y sustituye los dos procedimientos del final de tu código: Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Picture1.PSet (X, Y), Color End If End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Exit Sub Picture1.PSet (X, Y), Color End Sub por esto: Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Picture1.PSet (X, Y), Color X1 = X Y1 = Y End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim X2 As Integer, Y2 As Integer If Button = 1 Then X2 = X Y2 = Y Picture1.Line (X1, Y1)-(X2, Y2), Color X1 = X2 Y1 = Y2 End If End Sub
Y esto funciona perfectamente.
|
|
|
En línea
|
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
Un pequeño aporte para cuando canceles o cierres el cuadro de dialogo no se grabe la imagen: Private Sub CmdGuardar_Click() With CommonDialog1 .DialogTitle = "Guardar el archivo" .Filter = "Archivos BMP|*.bmp|Archivos JPG|*.bmp|Todos|*.*" .ShowSave If .FileName = "" Then MsgBox "No se especificó ningún nombre", vbCritical End If If not(.CancelError) then SavePicture Picture1.Image, .FileName End With End Sub
Private Sub Form_Load() Picture1.AutoRedraw = True End Sub
En ese sentido, para que sea completamente correcto seria necesario agregarle: porque de la manera actual, entra en el siguiente bloque, canceles o no... If not(.CancelError) then SavePicture Picture1.Image, .FileName Por otro lado: ah y como se si ese pixel ya tiene algun color... Aunque ya la respondieron correctamente, os dejo un ejemplo sencillo, podes trabajarlo con los valores hexadecimales que devuelve: Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Ejemplo... ;-] Me.Cls Me.BackColor = Picture1.Point(X, Y) Me.Caption = "Valor hexadecimal del color: " & Hex(Me.BackColor) End Sub Creo que eso es todo... ¡S4lu2! y suerte en lo que haces...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Validar un archivo txt que solo contenga 1 y 0,para dibujar una img?
Java
|
hack-4-life
|
1
|
3,090
|
23 Septiembre 2011, 13:58 pm
por Valkyr
|
|
|
Que table-pc me recomiendan para dibujar? Wacom Graphire 4?
Diseño Gráfico
|
Attaque77
|
0
|
3,474
|
9 Octubre 2011, 21:15 pm
por Attaque77
|
|
|
Que programa se usa para dibujar el siguiente diagrama?
Bases de Datos
|
chocola
|
1
|
2,844
|
2 Enero 2013, 20:08 pm
por lipman
|
|
|
Un ingeniero crea un algoritmo para dibujar a personajes de videojuegos con ....
Noticias
|
wolfbcn
|
0
|
1,397
|
5 Junio 2013, 01:16 am
por wolfbcn
|
|
|
variable word o dword para dibujar
Programación C/C++
|
rulovive
|
4
|
2,420
|
26 Julio 2015, 22:30 pm
por rulovive
|
|