Кнопка для очистки цвета
При нажатии на Clear должно откатывать цвета в исходное положение. Как её реализовать?
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
namespace GUISymbolCodes
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
Pen myPen = new Pen(Color.Gray);
SolidBrush bgBrush=new SolidBrush(Color.Green);
SolidBrush pixelBrush=new SolidBrush(Color.Aqua);
Int32 rectWidth=80;
byte[,] BitMap= new byte[8,8];
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
for(int i=0;i<8;++i)
for(int j=0;j<8;++j)
BitMap[i,j]=0;
}
void MainFormPaint(object sender, PaintEventArgs e)
{
Graphics gdev=e.Graphics;
SolidBrush currentBrush;
for(int i=0;i<8;++i)
for(int j=0;j<8;++j)
{
currentBrush = bgBrush;
if (BitMap[i,j]==1)
{
currentBrush = pixelBrush;
}
gdev.FillRectangle(currentBrush, i*rectWidth, j* rectWidth, rectWidth, rectWidth);
gdev.DrawRectangle(myPen, i*rectWidth, j* rectWidth, rectWidth, rectWidth);
}
}
void MainFormClick(object sender, EventArgs e)
{
// e.
// var local = new Point(e.X ,e.Y);
// MessageBox.Show(local.ToString());
// base.OnMouseClick(e);
}
void MainFormMouseClick(object sender, MouseEventArgs e)
{
var local = new Point(e.X ,e.Y);
SolidBrush currentBrush=bgBrush;
Graphics gdev=Graphics.FromHwnd(this.Handle);
int i=e.X/rectWidth,j=e.Y/rectWidth;
// MessageBox.Show(local.ToString()+" i="+i.ToString()+" j="+j.ToString());
if(i>7||j>7)
return;
if(BitMap[j,i]==0)
{
BitMap[j,i]=1;
currentBrush=pixelBrush;
}
else
{
BitMap[j,i]=0;
currentBrush=bgBrush;
}
gdev.FillRectangle(currentBrush, i*rectWidth, j* rectWidth, rectWidth, rectWidth);
gdev.DrawRectangle(myPen, i*rectWidth, j* rectWidth, rectWidth, rectWidth);
GetHexCode();
}
void GetHexCode()
{
UInt64 res=0,marker=1;
for(int i=0;i<8;++i)
for(int j=0;j<8;++j)
{
res+=BitMap[i,j]*marker;
if(i==7&&j==7)
break;
marker*=2;
}
hexFild.Text=res.ToString("X16");
}
void SaveButtonClick(object sender, EventArgs e)
{
SaveFileDialog MyFileDlg = new SaveFileDialog();
MyFileDlg.DefaultExt = ".fw";
MyFileDlg.Filter = "fw data file (*.fw) *.fw|";
if (MyFileDlg.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(MyFileDlg.FileName+" "+hexFild.Text);
StreamWriter fwStream=new StreamWriter(MyFileDlg.FileName);
// fwStream.Write("Firmware:");
fwStream.Write(hexFild.Text);
fwStream.Close();
}
}
}
}
Ответы (1 шт):
Что конкретно вам надо, я не знаю. Вы просто предоставили код без пояснений.
Если вам нужно менять цвета на форме, то вот как это сделать:
Для начала, вам нужно как-то хранить стандартные настройки цветов. Это можно сделать, к примеру, создав словарь, в котором ключём будет тег объекта, а значением - его цвет.
После этого вам надо определиться, где хранить эти данные. Вы можете хранить их в настройках Settings.settings или в отдельном файле, например xml, или в реестре, или как вам угодно.
Далее нужно эти настройки как-то подгрузить, тут всё зависит от места сохранения.
И уже после этого вы можете сделать реализацию смены цветов. Это может быть функция которая перебирает все объекты на форме и смотрит, есть ли такой же тег как у текущего объекта в словаре, если да - изменяет цвет на цвет из словаря.