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++}}== |