Una De Colores, Paletas Y Demás Yerbas


Objetivo: Una De Colores, Paletas Y Demás Yerbas
Hola!
Tengo una pregunta más....y me temo no será la última

Tengo una paleta de 256 colores, codificados cada uno como un byte, de 00 a FF. Tengo que dibujar cosas usando esa paleta. Se trata de ...."caracteres" de 16x16 pixeles, donde cada pixel está representado por un byte que determina su color. O sea...cada caracter ocupa 256 bytes (lo mismo que la paleta, pero es casualidad)

Asigno el color de dibujo con draw.ForeColor = ...... pero no quiero tener que hacer 256 "IF" por pixel para ver si tengo que usar el color 1, el dos, el tres...etc.

Lo primero que se me ocurre es usar un array de 256 elementos, que tenga para cada valor del indice el RGB correspondiente a ese valor dentro de la paleta (siento que lo estoy explicando fatal...perdon!)

¿Esa será la mejor forma?

Estoy seguro que asi va a funcionar, y que será razonablemente rápido. Pero como tengo que dibujar 240 de esos boloques de 16x16, me interesa que sea lo más rápido posible, por eso me animé a exponerles el problema a ver si tenian algun otro enfoque que valga la pena analizar.

Gracias!

Perfil MP  
Ayortano
Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Pues no he entendido muy bien, pero parece que es dibujar en un DrawingArea algo, por píxel. Como has dicho, haces un array y lo recorres con For...Next:

Public Procedure Recorrer()
im arrByt As Integer[]
Dim i As Integer

For i=0 To arrByt.Count - 1
drawingArea1.ForeColor=arrByt[i]
' Aquí haces lo que tengas que hacer para dibujar
Next
End

Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Perfecto!
Me parecia que era la forma adecuada, pero siempre es bueno tener la opinion de los que saben

Ya que estamos, te pregunto: Cada "pixel" van a ser en realdiad 4. Es decir, pienso hacer (por cada bit) algo como

pongo_punto(x,y)
pongo_punto(x+1 ,y)
pongo_punto(x,y+1)
pongo_punto(x+ 1,y+1)

por supuesto cuidando de que X e Y siempre sean numeros pares (o impares) como para no superponer nada. Eso ya lo tengo funcionando, sin problemas.

Pero....tengo que hacer 4 veces mas cosas que si pudiese poner puntos "de 2x2 pixeles". ¿Se puede hacer eso? Se como cambiar el grosor de una linea (draw.LineWidth = n).....pero....¿existe algo parecido para los puntos?

Creo que con eso no pregunto mas (por hoy.... )

Perfil MP  
Ayortano
Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
¿Draw.Point no es por píxel?

Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Exacto, y es eso es lo que uso.

Pero lo que necesito es dibujar "pixeles" de 2x2, SIEMPRE....por eso pensaba en si no habria una forma de predeterminar que Draw.Point los haga de ese tamaño, o bien de que el "paño" de dibujo este "escalado" a 2x, de forma que todo se vea el doble de grande...(estoy delirando de lo lindo, pero si existe algo asi, disminuyo el tiempo de dibujo en un factor de 4!!!)

Perfil MP  
Ayortano
Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Pues no, ya habría que modificar el código fuente en C++, para ver si el tamaño (4) está definido por el componente, o por causas más "internas" es decir, el propio DrawingArea de QT. Iba a preguntarte que gambas usas, pero ya me di cuenta debido al "ForeColor"

Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Igual y si usas lineas en vez de puntos, y "seteando" el ancho de linea.

http://gambasdoc.org/help/comp/gb.qt/draw

Objetivo: Re: Una De Colores, Paletas Y Demás Yerbas
Si, lo habia pensado!
Tengo que comprobar que sea más rápido hacer una linea de ancho 2 y largo 2 que poner cuatro puntos individuales. Dibujar unos cuantos miles y tomar el tiempo, a ver que conviene mas.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4196s (PHP: -83% SQL: 183%)
Consultas SQL: 45 - Debug off - GZIP Activado