Add working Scaling (at least as a proof of concept)
This commit is contained in:
parent
4856adf3d7
commit
6caf74a154
3 changed files with 64 additions and 25 deletions
25
Game_of_Life/MainForm1.Designer.cs
generated
25
Game_of_Life/MainForm1.Designer.cs
generated
|
|
@ -1,4 +1,6 @@
|
|||
namespace Game_of_Life;
|
||||
using System.Media;
|
||||
|
||||
namespace Game_of_Life;
|
||||
|
||||
partial class MainForm1
|
||||
{
|
||||
|
|
@ -29,33 +31,52 @@ partial class MainForm1
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.pictureBox1 = new PictureBoxWithInterpolationMode();
|
||||
this.pictureBox1 = new Game_of_Life.PictureBoxWithInterpolationMode();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pictureBox1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(800, 450);
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
|
||||
this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label1.ForeColor = System.Drawing.Color.AliceBlue;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(27, 15);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "";
|
||||
//
|
||||
// MainForm1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Black;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Name = "MainForm1";
|
||||
this.Text = "MainForm1";
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private PictureBoxWithInterpolationMode pictureBox1;
|
||||
private Label label1;
|
||||
}
|
||||
|
|
@ -6,30 +6,13 @@ namespace Game_of_Life;
|
|||
|
||||
public partial class MainForm1 : Form
|
||||
{
|
||||
private int scalingFactor = 10;
|
||||
public MainForm1()
|
||||
{
|
||||
Pixelmap pixelmap;
|
||||
int scalingFactor = 10;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
int height = pictureBox1.Size.Height;
|
||||
int width = pictureBox1.Size.Width;
|
||||
label1.Text = "Scaling Factor: " + scalingFactor.ToString() + $"\nDimensions: {pictureBox1.Size.Height.ToString()}x{pictureBox1.Size.Width.ToString()}";
|
||||
|
||||
Graphics graphics = pictureBox1.CreateGraphics();
|
||||
|
||||
|
||||
pixelmap = new Pixelmap(height, width, scalingFactor);
|
||||
Random rand = new Random();
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
pixelmap.setPixel(rand.Next(width), rand.Next(height), rand.Next(3));
|
||||
}
|
||||
|
||||
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
pictureBox1.InterpolationMode = InterpolationMode.NearestNeighbor;
|
||||
pixelmap.paintOnGraphics(graphics);
|
||||
|
||||
/* this.Shown += (s, e) =>
|
||||
{
|
||||
|
|
@ -45,4 +28,39 @@ public partial class MainForm1 : Form
|
|||
}
|
||||
};*/
|
||||
}
|
||||
|
||||
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
|
||||
{
|
||||
Pixelmap pixelmap;
|
||||
|
||||
int height = pictureBox1.Size.Height;
|
||||
int width = pictureBox1.Size.Width;
|
||||
|
||||
Graphics graphics = e.Graphics;
|
||||
|
||||
|
||||
pixelmap = new Pixelmap(height, width, scalingFactor);
|
||||
Random rand = new Random();
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
pixelmap.setPixel(rand.Next(width / scalingFactor), rand.Next(height / scalingFactor), rand.Next(3));
|
||||
}
|
||||
|
||||
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
pictureBox1.InterpolationMode = InterpolationMode.NearestNeighbor;
|
||||
pixelmap.paintOnGraphics(graphics);
|
||||
// Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
|
||||
{
|
||||
scalingFactor += e.Delta/32;
|
||||
if (scalingFactor < 1)
|
||||
{
|
||||
scalingFactor = 1;
|
||||
}
|
||||
label1.Text = "Scaling Factor: " + scalingFactor.ToString() + $"\nDimensions: {pictureBox1.Size.Height.ToString()}x{pictureBox1.Size.Width.ToString()}";
|
||||
pictureBox1.Refresh();
|
||||
}
|
||||
}
|
||||
|
|
@ -9,8 +9,8 @@ public class Pixelmap
|
|||
|
||||
public Pixelmap(int height, int width, int scalingFactor)
|
||||
{
|
||||
this.height = height;
|
||||
this.width = width;
|
||||
this.height = height / scalingFactor;
|
||||
this.width = width / scalingFactor;
|
||||
map = new Color[width, height];
|
||||
for (int w = 0; w < width; w++)
|
||||
{
|
||||
|
|
@ -60,8 +60,8 @@ public class Pixelmap
|
|||
Color pixelColor = map[w, h];
|
||||
if (!pixelColor.Equals(Color.Black))
|
||||
{
|
||||
Pen pixelBrush = new Pen(pixelColor);
|
||||
g.DrawRectangle(pixelBrush, new Rectangle((w/scalingFactor), (h/scalingFactor), scalingFactor, scalingFactor));
|
||||
Brush pixelBrush = new SolidBrush(pixelColor);
|
||||
g.FillRectangle(pixelBrush, new Rectangle((w*scalingFactor), (h * scalingFactor), scalingFactor, scalingFactor));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue