![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema para hacer un array a un TImage!
Buenas!
Os comento el problema que tengo... el semestre pasado en la universidad hicimos un tetris, del cuál ya os pregunté una duda que tenía con el TTimer que me solucionásteis al instante. El hecho es que para hacer ese tetris, el profesor de la asignatura de informática nos dio los componentes ya hechos y sólo tubimos que instalar el paquete en el lazarus (el tablero, las piezas...), etc. Yo quería hacer un Space invaders 'cutre'. He sido capaz de crear un 'tablero negro' con un TImage y con el procedimiento Canvas, y también dibujar un cuadradito en él, rojo, por ejemplo, que se pueda mover por el tablero (que no salga de él), etc. Mi problema es que es que necesito que cuando, digamos,dos cuadraditos choquen lo detecte el sistema. Para simplificar la vida, y como el profesor lo hizo en el tetris, lo más fácil es dividir el tablero en una matriz de, por ejemplo, 10 por 20. Así podría escribir directamente que si, por ejemplo, un cuadradito rojo está moviéndose hacia la derecha y la casilla siguiente que debería ocupar, , entonces NO puede pasar, choca y se elimina. Me he pasado muchos días buscando pero NO consigo encontrar COMO dividir un TImage o un TBitmap en celdas para que tengan esa propiedad de tabla. Creo que es con la función array, pero no tengo ni idea... Si me pudiérais ayudar, os lo agradecería de corazón! Gracias!!! |
#2
|
||||
|
||||
Puedes utilizar las propiedad Canvas.Pixels[i,j] del TBitmap
__________________
[Crandel] |
#3
|
||||
|
||||
Aunque se ganaría en más velocidad si se empleara .ScanLine()
![]() Como desventaja, hay que poner un poco más de código y algunas operaciones extras. Saludos, |
#4
|
||||
|
||||
Pero con la Canvas.Pixels[i,j] qué hace exactamente? Me lo divide o simplemente me lee la información de un cierto pixel de componentes i,j ??
Y con el ScanLine() qué es lo que hace exactamente?? No sabéis entonces como hacer lo del array?? Según lo que he visto era algo tipo:
Muchísimas gracias, de cualquier forma!! |
#5
|
||||
|
||||
Hola Manuzinho,
La propiedad Pixels[] permite acceder a un pixel determinado mediante las dos coordenadas: ancho, alto. Es decir que: .Pixels[100,478] hace referencia al pixel ubicado en (100,478) de la imagen. Imagina a la imagen como una tabla. Por otro lado .ScanLine permite obtener el puntero de memoria a una línea o fila de la imagen. De este modo se puede "leer" la imagen línea a línea y es mucho más rápido y eficiente que estar operando con .Pixels. Como contra, al usar ScanLine(j) se requiere de un poco más de código... se trabaja a nivel punteros y una vez leído la línea para ubicarnos en la posición (i,j) debemos desplazarnos i lugares. Si te tomaras el tiempo de buscar en los foros sobre Pixels y ScanLine encontrarás muchos hilos con ejemplos y modos de uso. Ha... por cierto, en la ayuda que viene con Delphi hay más info. Saludos, |
#6
|
||||
|
||||
Muchísimas gracias!! El pixels me ha ayudado mucho en lo que quería, el ScanLine() lo intenté, y busqué algo, pero me parece un poco complicado para mi nivel, así que una vez termine con esto y tenga un poco de tiempo me lo miraré...
Aún así no consigo hacer lo que quería hacer exactamente, que era lo de convertir la imagen en una tabla de [x,y] siendo 'x' y 'y' las columnas y tablas que a mí me de la gana... Así como asignarle a esta tabla las propiedades de color, de manera que pueda decir directamente 'tabla[x,y]:=clRed;', por ejemplo... Gracias!! |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema para hacer un TRACE a una BPL | Efren2006 | OOP | 2 | 31-12-2008 15:28:29 |
Mostrar cada imagen de un Array of TImage. | rauros | Gráficos | 1 | 04-09-2008 17:38:55 |
Se puede hacer un array de procedures | David | OOP | 25 | 24-06-2008 10:40:57 |
como Hacer que un TImage siga a un Timage? | j_flores3000 | OOP | 8 | 27-03-2008 18:47:50 |
Problema con Timage despues de hacer LoadFromFile | JarLem | Varios | 6 | 13-12-2007 11:06:46 |
![]() |
|