Asuntos Oficiales > Retos
Formato Bmp
JuanK:
mejor hasle invalidate cada vez que la ventana recupere el foco, de esta manera se refrescara, eso es el evento activate o get focus.... depende de la implementacion...
Enko:
tambien puedes dibujar la imagen en un HDC de memoria, crear un Timer y en el evento WM_TIMER volcar el HDC de memoria en el HDC de la ventana.
con esto creas el buffer
--- Código: Text --- hWindow := CreateWindow(........);WindowDC := GetDC(hWindow); Bitmap := CreateCompatibleBitmap(WindowDC);VirtualScreen := CreateCompatibleDC(WindowDC);SelectObject(VirtualScreen, Bitmap);
para crear el timer
--- Código: Text --- SetTimer(hWindow, hTimer, 0,1);
para dibujar en la pantalla vitual
--- Código: Text --- SetPixel(VirtualScreen, etc....);
finalmente, el codigo del windProc para que la imagen siemrpe se dibuje
--- Código: Text --- function WindProc(hWnd, MSG, wParam, lParam: Integer): Integer;begincase MSG if WM_DESTROY: begin DeleteObject(Bitmap); DeleteDC(VirtualScreen); end; WM_PAINT: BitBlt(WindowDC, 0,0,Width, Height, VitualScreen, 0,0); //break WM_TIMER: SendMessage(hWnd, WM_PAINT, 0,0); //breakend;
Danielo:
Gracias JuanK y Enko... :rolleyes:
... ya está terminado!! :jumpie:
Al final no fue necesario utilizar WM_ACTIVATE o set focus y tampoco fue necesario dibujar la imagen en un HDC de memoria. El problema que tenía con el refresco de pantalla era a causa del orden en que había declarado algunas variables, pero todo se solucionó declarándolas en el orden conveniente :smartass: .
Bueno, creo que eso es todo (JuanK: acabo de mandarte los archivos), agradezco a todos los que me ayudaron y ahora entiendo un poco como funciona la win32 Bored API ;)
JuanK:
--- Cita de: "Danielo" --- agradezco a todos los que me ayudaron y ahora entiendo un poco como funciona la win32 Bored API ;)
--- Fin de la cita ---
JEJEJEJE :lol:
Ok, entonces me tomare una o dos semanas para someter todos los retos a pruebas y elaborar un informe. :smartass:
:gracias: a todos por su participación.
Cualquier duda este post sigue abierto hasta que se publiquen los resultados.
Este fin de semana sera tiempo habilitado para entregar nuevas versiones si alguien quiere hacerlo.:bravo:
:hola:
JuanK:
ok, todos los proyectos cumplieron con lo requerido.
Queria inicialmente hacer un analisis muy detallado de cada uno, pero por lo visto por estos dias el tiempo no esta a mi favor, asi que he hecho este resumen.
Puntos Favorables de cada proyecto:
Nagisa : Brevedad del codigo
Diodo : Uso de tabs
Geo : Salida mixta por consola y GUI
Enko : Informe de excepciones
Danielo: Informacion adicional del mapa de bits
Senzao18: Sencilles, muy user friendly
JuanK : N/A
Puntos DesFavorables de cada proyecto:
Nagisa: Demasiado Lento ( me habias dicho que lo habias corregido? es que no tengo mas copias :losiento: )
Diodo : En algunos casos muestra la imagen de forma irregular( me habias dicho que lo habias corregido? es que no tengo mas copias :losiento: )
Geo : WxWidgets es muy engorroso de usar, pero no es culpa tuya ( no sabia que mas escribir :scream: )
Enko : Demasiado lento
Danielo:Se revienta con bitmaps grandes
Senzao18: Demasiado lento
JuanK :N/A
Clasificacion por tecnologia
.NET
Diodo(C#)
JuanK(C#)
Senzao18( VB.NET)
Delphi (pascal)
Enko
C/C++
Geo(WxWidGets)
Danielo (WinApi)
Java
Nagisa
About Me
No puedo ser juez y parte por eso no hice comentarios acerca de mi reto.
Otros Comentarios
En general creo que todos hemos sacado provecho del ejercicio, y valio la pena invertir el tiempo :smartass: .
Como notas adicionales , de los ejercicios de Geo puedo decir que me gusto su idea de usar WxWidgets ya que pude probar el programa en Windows y Linux ( mi aplicativo extra en C#.net tambien corrio en ambos), y es interesante explorar esas posibilidades en C++. En cuanto a rendimiento esta muy bien y pese a que no eres informatico tienes buenos habitos de programacion.
El ejercicio de Danielo fue con la Win32Api, creo que esto le ha ayudado mucho a él ya que con este tipo de ejercicios y usando la tecnologia que usó podra desarrollar mas rapidamente sus habilidades como programador, creo que el crecioo enormemente con el ejercicio. El problema de la memoria debes revisarlo, me ocurrio con un bitmap grandecito.
Respecto al proyecto de Enko, creo que ha demostrado que tiene buenos conocimientos y manejo de delphi, asi como buenos habitos de programacion.,y que bueno que haya decidido a aventurarce en .NET. :lol: . Aprendi que Delphi ( o pascal , como sea) es como un C++ pero con algo de la sintaxis de basic :P . Yo le mejoraria la interfaz y el rendimiento ya que esta lento pero se nota mucho con bmps grandes.
Muy bueno y saber quie tampoco eres informatico.
El proyecto de Nagisa se destaca principalmente por ser el de mas poco codigo, una implementacion realmente practica lo cual se le debe reconocer, adicionalmente es el unico proyecto que se hizo e java. ;) Gracias a él muchos vimos lo del corrimiento de una manera muy eficiente, yo por lo menos lo hacia de otra manera pero me gusta mas la tuya.
Diodo utilizo C# .NET , la interfaz grafica que uso me ha gustado bastante, en especial el uso de tab pages me parece ideal.. solo falto poder cerrar los tab, pero bueno nada es perfecto :smartass: El codigo es breve pese a la complejidad que le agregaste con lo de los tab . A mi me gusto tu propuesta sobre todo a nivel grafico.
Senzao18 Utilizó VB.NET, me gusta del proyeco que ofrece una interfaz sencilla y que facilita su uso directo, en general me parecio bien estructurado pero debo confesar que no me fueron del todo claro unas partes en cuanto al orden que le quiciste dar, el problema de la lentitud es por la tecnica que usaste para el dibujo, al igual que a los demas que se les llego a presentar ese problema, veraz que un cambio muy sencillo te produce una mejora considerable en los resultados.
JuanK...
Agradezco de verdad a todos su participacion, creo que todos son los mejores ganadores, por que todos asumieron y finalizaron el reto!!!
FELICITACIONES :smartass: :beer: :birthday: :guitar:
Links de los proyectos:
JuanK
Nagisa
Diodo
Geo
Danielo
Senzao18
Enko
La discucion no se cierra, cualquier duda, o comentario favor no duden en compartirlo. :kicking:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa