Greyscale bars/Display: Difference between revisions

Content added Content deleted
mNo edit summary
(→‎{{header|C}}: Adding C# Version)
Line 251: Line 251:
return 0;
return 0;
} </lang>
} </lang>

=={{header|C sharp|C#}}==
{{libheader|System.Windows.Forms}}
<lang csharp>using System;
using System.Drawing;
using System.Windows.Forms;
static class Program
{
static void Main()
{
Application.Run(new FullScreen());
}
}
public sealed class FullScreen : Form
{
public FullScreen()
{
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
KeyPress += (s, e) => Application.Exit();
BackgroundImage = ColorBars(Screen.FromControl(this).Bounds);
}
private static Bitmap ColorBars(Rectangle screen)
{
int width = screen.Width, height = screen.Height;
var colorBars = new Bitmap(width, height);
var colorLimit = 256;
int stripeHeight = height/4;
for (int x = 0; x < width; x++)
{
int divisions = 8;
Func<int> forwardColor = () => x/(width/divisions)*(colorLimit/divisions);
Func<int> reverseColor = () => colorLimit - 1 - forwardColor();
Action<int> setForward = y => colorBars.SetPixel(x, y, Color.FromArgb(forwardColor(), forwardColor(), forwardColor()));
Action<int> setReverse = y => colorBars.SetPixel(x, y, Color.FromArgb(reverseColor(), reverseColor(), reverseColor()));

for (int y = 0; y < stripeHeight; y++) setForward(y);
divisions = 16;
for (int y = stripeHeight; y < stripeHeight*2; y++) setReverse(y);
divisions = 32;
for (int y = stripeHeight*2; y < stripeHeight*3; y++) setForward(y);
divisions = 64;
for (int y = stripeHeight*3; y < stripeHeight*4; y++) setReverse(y);
}
return colorBars;
}
}</lang>


=={{header|C++}}==
=={{header|C++}}==