¿Cómo puedo dibujar una línea de textura por línea

Deseo dibujar una textura en la pantalla línea por línea (líneas horizontales). ¿Puedo hacer esto en xna?

Al principio, simplemente deseo comenzar en la parte superior de la textura, dibujar una sola línea horizontal de píxeles yxn de milisegundos después dibujar la siguiente línea y así sucesivamente hasta que la textura se dibuje por completo. En el futuro, tal vez quiera dibujar estas líneas horizontales en cualquier order.

¿Alguna idea de la mejor manera de lograr esto?

Solo puede especificar la cantidad de la image que desea dibujar en el método spriteBatch.Draw () así: (La statement de la variable es solo para auto-documentation)

height = Math.Max(height + 1, 500); Rectangle destinationRect = new Rectangle(0, 0, 500, height); Rectangle sourceRect = new Rectangle(0, 0, 500, height); spriteBatch.Draw(my500x500Texture, destinationRect, sourceRect, Color.White); 

Todo lo que hace es dibujar un píxel más de la textura de background en cada llamada hasta que alcanza la altura máxima de la image (500 en el ejemplo). Tenga en count que las velocidades de procesamiento serán diferentes en diferentes máquinas, por lo que es probable que desee basar la altura del sorteo en el time de juego para ser más consistente.

Para dibujar segmentos aleatorizados de una línea de la image, usaría una statement de dibujar por línea y dibujaría cada línea así:

 lineY = 42; // Figure this part out yourself, and loop this somehow Rectangle destinationRect = new Rectangle(0, 0 + lineY, 500, 1); // Drawing at (0,0) Rectangle sourceRect = new Rectangle(0, lineY, 500, 1); spriteBatch.Draw(my500x500Texture, destinationRect, sourceRect, Color.White); 

use Texture2D.getData () para extraer la matriz de colors

luego usa esta matriz para crear una textura nueva y agrega un píxel en cada incremento de time

deberías poder modificar el siguiente a tu necesidad

 var texture = new Content.Load<Texture2D>("file"); var colors = texture.GetData(); var colorsNew = new Color[texture.Width * texture.Height]; colorsNew[0] = colors[0] texture.SetData(colorsNew); //DRAW texture //nextUpdate colorsNew[1] = colors[1] texture.SetData(colorsNew); //DRAW texture 

tenga en count que esto no se ha probado y es posible que deba modificar el order en que se llena colorsNew, pero esto básicamente debe hacer lo que necesita

Intereting Posts