I'm attempting to create an animation that will help me visualize how different brain regions signal to each other. As an example, brain region 1 (for now visualized as a text box) blinks and this triggers a trail of lights to brain region 2 which blinks and triggers a 2nd signal etc etc..
To that end I've tried to write up a small traffic light code in MS visual studio C# similar to what many others have done before me:
private void timer1_Tick(object sender, EventArgs e)
{
if (ovalshape1.visible == true)
{
ovalshape1.visible = false;
ovalshape2.visible = true;
}
else if (ovalshape2.visible == true)
{
ovalshape1.visible = true;
ovalshape2.visible = false;
}
}
This code works well also if I expand to e.g. 5 "lights" as long as only one "light" is on at a time. In order to produce the trailing effect, I would like to have several lights on at one time and this is where I'm running into problems as this seems to confuse my IF setup...
The trailing light would look something this:
I've tried to bypass this by producing a boolean array to control which lights are on and off, as I thought that would greatly shorten the amount of code that I would need to write, but my coding abilities are not up to that.
I've also tried implementing a loop, thinking that in this way I could just define which lights are on/off when i=0, i=1 and so on... but is that even done inside a timer?
I've tried reading up on how to approach this problem, but have not been able to find anything that seemed directly applicable to my situation. I hope that you can help me.
Ultimately I would like to show signaling between 7 brain regions.
Something like
Region1 --> R2 --> R3 --> R4 --> R5 <--R6
Region7 recieves input from R5.
I envision signaling between the individual regions as collection of dots that turn on/off in a trailing pattern similar to what is achieved using traffic light code.
To complicate matters, I would like to run two animations in parallel, depicting "normal" signaling in the brain and what I hypothesize is (part of) the pathological signaling in schizophrenia.
So far I've managed to create two parallel rows of 5 trailing lights. Each row is controlled by a timer, which allows me to adjust the speed for each row.
I can scale this so that each timer controls multiple trailing lights using the code below:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int counter = 0;
string shapeColorON = "White";
string shapeColorOFF = "Black";
private void buttonStart_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
counter++;
if (counter == 1)
{
ovalShape1.FillColor = Color.FromName(shapeColorON);
ovalShape2.FillColor = Color.FromName(shapeColorOFF);
ovalShape3.FillColor = Color.FromName(shapeColorOFF);
ovalShape4.FillColor = Color.FromName(shapeColorOFF);
ovalShape5.FillColor = Color.FromName(shapeColorOFF);
ovalShape6.FillColor = Color.FromName(shapeColorON);
ovalShape7.FillColor = Color.FromName(shapeColorOFF);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorOFF);
ovalShape11.FillColor = Color.FromName(shapeColorON);
ovalShape12.FillColor = Color.FromName(shapeColorOFF);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorOFF);
ovalShape16.FillColor = Color.FromName(shapeColorON);
ovalShape17.FillColor = Color.FromName(shapeColorOFF);
ovalShape18.FillColor = Color.FromName(shapeColorOFF);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorOFF);
ovalShape21.FillColor = Color.FromName(shapeColorON);
ovalShape22.FillColor = Color.FromName(shapeColorOFF);
ovalShape23.FillColor = Color.FromName(shapeColorOFF);
ovalShape24.FillColor = Color.FromName(shapeColorOFF);
ovalShape25.FillColor = Color.FromName(shapeColorOFF);
}
else if (counter == 2)
{
ovalShape1.FillColor = Color.FromName(shapeColorON);
ovalShape2.FillColor = Color.FromName(shapeColorON);
ovalShape3.FillColor = Color.FromName(shapeColorOFF);
ovalShape4.FillColor = Color.FromName(shapeColorOFF);
ovalShape5.FillColor = Color.FromName(shapeColorOFF);
ovalShape6.FillColor = Color.FromName(shapeColorON);
ovalShape7.FillColor = Color.FromName(shapeColorON);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorOFF);
ovalShape11.FillColor = Color.FromName(shapeColorON);
ovalShape12.FillColor = Color.FromName(shapeColorON);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorOFF);
ovalShape16.FillColor = Color.FromName(shapeColorON);
ovalShape17.FillColor = Color.FromName(shapeColorON);
ovalShape18.FillColor = Color.FromName(shapeColorOFF);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorOFF);
ovalShape21.FillColor = Color.FromName(shapeColorON);
ovalShape22.FillColor = Color.FromName(shapeColorON);
ovalShape23.FillColor = Color.FromName(shapeColorOFF);
ovalShape24.FillColor = Color.FromName(shapeColorOFF);
ovalShape25.FillColor = Color.FromName(shapeColorOFF);
}
else if (counter == 3)
{
ovalShape1.FillColor = Color.FromName(shapeColorOFF);
ovalShape2.FillColor = Color.FromName(shapeColorON);
ovalShape3.FillColor = Color.FromName(shapeColorON);
ovalShape4.FillColor = Color.FromName(shapeColorOFF);
ovalShape5.FillColor = Color.FromName(shapeColorOFF);
ovalShape6.FillColor = Color.FromName(shapeColorOFF);
ovalShape7.FillColor = Color.FromName(shapeColorON);
ovalShape8.FillColor = Color.FromName(shapeColorON);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorOFF);
ovalShape11.FillColor = Color.FromName(shapeColorOFF);
ovalShape12.FillColor = Color.FromName(shapeColorON);
ovalShape13.FillColor = Color.FromName(shapeColorON);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorOFF);
ovalShape16.FillColor = Color.FromName(shapeColorOFF);
ovalShape17.FillColor = Color.FromName(shapeColorON);
ovalShape18.FillColor = Color.FromName(shapeColorON);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorOFF);
ovalShape21.FillColor = Color.FromName(shapeColorOFF);
ovalShape22.FillColor = Color.FromName(shapeColorON);
ovalShape23.FillColor = Color.FromName(shapeColorON);
ovalShape24.FillColor = Color.FromName(shapeColorOFF);
ovalShape25.FillColor = Color.FromName(shapeColorOFF);
}
else if (counter == 4)
{
ovalShape1.FillColor = Color.FromName(shapeColorOFF);
ovalShape2.FillColor = Color.FromName(shapeColorOFF);
ovalShape3.FillColor = Color.FromName(shapeColorON);
ovalShape4.FillColor = Color.FromName(shapeColorON);
ovalShape5.FillColor = Color.FromName(shapeColorOFF);
ovalShape6.FillColor = Color.FromName(shapeColorOFF);
ovalShape7.FillColor = Color.FromName(shapeColorOFF);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorON);
ovalShape11.FillColor = Color.FromName(shapeColorON);
ovalShape12.FillColor = Color.FromName(shapeColorOFF);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorOFF);
ovalShape16.FillColor = Color.FromName(shapeColorOFF);
ovalShape17.FillColor = Color.FromName(shapeColorON);
ovalShape18.FillColor = Color.FromName(shapeColorON);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorOFF);
ovalShape21.FillColor = Color.FromName(shapeColorOFF);
ovalShape22.FillColor = Color.FromName(shapeColorOFF);
ovalShape23.FillColor = Color.FromName(shapeColorON);
ovalShape24.FillColor = Color.FromName(shapeColorON);
ovalShape25.FillColor = Color.FromName(shapeColorOFF);
}
else if (counter == 5)
{
ovalShape1.FillColor = Color.FromName(shapeColorOFF);
ovalShape2.FillColor = Color.FromName(shapeColorOFF);
ovalShape3.FillColor = Color.FromName(shapeColorOFF);
ovalShape4.FillColor = Color.FromName(shapeColorON);
ovalShape5.FillColor = Color.FromName(shapeColorON);
ovalShape6.FillColor = Color.FromName(shapeColorOFF);
ovalShape7.FillColor = Color.FromName(shapeColorOFF);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorON);
ovalShape10.FillColor = Color.FromName(shapeColorON);
ovalShape11.FillColor = Color.FromName(shapeColorOFF);
ovalShape12.FillColor = Color.FromName(shapeColorOFF);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorON);
ovalShape15.FillColor = Color.FromName(shapeColorON);
ovalShape16.FillColor = Color.FromName(shapeColorOFF);
ovalShape17.FillColor = Color.FromName(shapeColorOFF);
ovalShape18.FillColor = Color.FromName(shapeColorOFF);
ovalShape19.FillColor = Color.FromName(shapeColorON);
ovalShape20.FillColor = Color.FromName(shapeColorON);
ovalShape21.FillColor = Color.FromName(shapeColorOFF);
ovalShape22.FillColor = Color.FromName(shapeColorOFF);
ovalShape23.FillColor = Color.FromName(shapeColorOFF);
ovalShape24.FillColor = Color.FromName(shapeColorON);
ovalShape25.FillColor = Color.FromName(shapeColorON);
}
else if (counter == 6)
{
ovalShape1.FillColor = Color.FromName(shapeColorOFF);
ovalShape2.FillColor = Color.FromName(shapeColorOFF);
ovalShape3.FillColor = Color.FromName(shapeColorOFF);
ovalShape4.FillColor = Color.FromName(shapeColorOFF);
ovalShape5.FillColor = Color.FromName(shapeColorON);
ovalShape6.FillColor = Color.FromName(shapeColorOFF);
ovalShape7.FillColor = Color.FromName(shapeColorOFF);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorON);
ovalShape11.FillColor = Color.FromName(shapeColorOFF);
ovalShape12.FillColor = Color.FromName(shapeColorOFF);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorON);
ovalShape16.FillColor = Color.FromName(shapeColorOFF);
ovalShape17.FillColor = Color.FromName(shapeColorOFF);
ovalShape18.FillColor = Color.FromName(shapeColorOFF);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorON);
ovalShape21.FillColor = Color.FromName(shapeColorOFF);
ovalShape22.FillColor = Color.FromName(shapeColorOFF);
ovalShape23.FillColor = Color.FromName(shapeColorOFF);
ovalShape24.FillColor = Color.FromName(shapeColorOFF);
ovalShape25.FillColor = Color.FromName(shapeColorON);
}
else if (counter == 7)
{
ovalShape1.FillColor = Color.FromName(shapeColorOFF);
ovalShape2.FillColor = Color.FromName(shapeColorOFF);
ovalShape3.FillColor = Color.FromName(shapeColorOFF);
ovalShape4.FillColor = Color.FromName(shapeColorOFF);
ovalShape5.FillColor = Color.FromName(shapeColorOFF);
ovalShape6.FillColor = Color.FromName(shapeColorOFF);
ovalShape7.FillColor = Color.FromName(shapeColorOFF);
ovalShape8.FillColor = Color.FromName(shapeColorOFF);
ovalShape9.FillColor = Color.FromName(shapeColorOFF);
ovalShape10.FillColor = Color.FromName(shapeColorOFF);
ovalShape11.FillColor = Color.FromName(shapeColorOFF);
ovalShape12.FillColor = Color.FromName(shapeColorOFF);
ovalShape13.FillColor = Color.FromName(shapeColorOFF);
ovalShape14.FillColor = Color.FromName(shapeColorOFF);
ovalShape15.FillColor = Color.FromName(shapeColorOFF);
ovalShape16.FillColor = Color.FromName(shapeColorOFF);
ovalShape17.FillColor = Color.FromName(shapeColorOFF);
ovalShape18.FillColor = Color.FromName(shapeColorOFF);
ovalShape19.FillColor = Color.FromName(shapeColorOFF);
ovalShape20.FillColor = Color.FromName(shapeColorOFF);
ovalShape21.FillColor = Color.FromName(shapeColorOFF);
ovalShape22.FillColor = Color.FromName(shapeColorOFF);
ovalShape23.FillColor = Color.FromName(shapeColorOFF);
ovalShape24.FillColor = Color.FromName(shapeColorOFF);
ovalShape25.FillColor = Color.FromName(shapeColorOFF);
}
if (counter == 7)
{
counter = 0;
However, I don't think that this approach will allow me to adjust the speed of each row of 5 lights individually... and going for 2x7 timers seems be a very poor idea too.