LISTING PROGRAM
1.
Kode Program MainForm
using System;
using System.Collections.Generic; using System.Drawing;
using System.Windows.Forms;
namespace skrips
{
/// <summary>
/// Description of MainForm. /// </summary>
public partial class MainForm : Form {
public MainForm() {
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
// }
void Label1Click(object sender, EventArgs e) {
}
void TestingToolStripMenuItemClick(object sender, EventArgs e)
{
Testing b1 = new Testing(); b1.ShowDialog();
}
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
if (MessageBox.Show("Apakah Anda ingin
keluar?","Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
Help form3 = new Help(); form3.ShowDialog(); }
2.
Kode Program Form Testing
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Diagnostics; using System.Drawing;
using System.Drawing.Imaging; using System.IO;
using System.Linq;
using System.Runtime.InteropServices; using System.Text;
using System.Windows.Forms;
namespace skrips
{
/// <summary>
/// Description of Testing. /// </summary>
/// public partial class Testing : Form {
public Testing() {
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
// }
void OpenClick(object sender, EventArgs e) {
OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image File(.*bmp)|*.bmp";
if(open.ShowDialog() == DialogResult.OK){
Bitmap bit = new Bitmap(open.FileName); if (bit.Width == bit.Height)
{
gbrAsli.SizeMode = PictureBoxSizeMode.StretchImage; gbrAsli.ImageLocation = open.FileName;
textBox11.Text=bit.Width.ToString(); textBox12.Text=bit.Height.ToString();
textBox10.Text=open.SafeFileName.ToString(); ukuran.Text = (fileSize / 1000).ToString();
} else{
MessageBox.Show("Panjang dan lebar citra harus sama!", "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error); }
} }
void BalikClick(object sender, EventArgs e) {
this.Dispose(); }
double hitungMSE(Bitmap imageAsli, Bitmap imageHasil)
{
double sum = 0;
double pxAsli, pxHasil, MSE;
for (int i = 0; i < imageAsli.Height; i++) {
for (int j = 0; j < imageAsli.Width; j++)
{
pxAsli = imageAsli.GetPixel(j, i).R; pxHasil = imageHasil.GetPixel(j, i).R; sum += Math.Pow((pxAsli - pxHasil), 2); }
}
MSE = Math.Floor(sum /(imageAsli.Height*imageAsli.Width)); return MSE;
}
double hitungPSNR(double MSE)
{
double PSNR=Math.Round(Math.Log10(10*Math.Pow(255, 2)/MSE)); return PSNR;
}
void Simpan1Click(object sender, EventArgs e) {
if(gbrHasil.Image != null) {
SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";
if (save.ShowDialog() == DialogResult.OK) {
gbrHasil.Image.Save(save.FileName, System.Drawin g.Imaging.ImageFormat.Bmp);
MessageBox.Show("Citra berhasil
disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information); }
else {
MessageBox.Show("Citra gagal tersimpan"); }
} }
void Simpan2Click(object sender, EventArgs e) {
if(gbrHasil2.Image != null) {
SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";
save.FileName = "*.bmp";
if (save.ShowDialog() == DialogResult.OK) {
gbrHasil2.Image.Save(save.FileName, System.Drawing.Ima ging.ImageFormat.Bmp);
MessageBox.Show ("Citra berhasil disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
MessageBox.Show("Citra gagal tersimpan"); }
} }
void Button3Click(object sender, EventArgs e) {
if(gbrHasil3.Image != null) {
SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";
save.FileName = "*.bmp";
if (save.ShowDialog() == DialogResult.OK) {
gbrHasil3.Image.Save(save.FileName, System.Drawing.Imagi ng.ImageFormat.Bmp);
MessageBox.Show("Citra berhasil disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information); }
MessageBox.Show("Citra gagal tersimpan"); }
} }
void WienerClick(object sender, EventArgs e) {
Stopwatch watch = new Stopwatch(); watch.Start();
FFTN a = new FFTN(gbrAsli.Image); // kelas wiener filter a.FFTExecute();
gbrHasil.Image = a.InverseFFT(); //transformasi balik wiener filter
gbrHasil.SizeMode = PictureBoxSizeMode.StretchImage; watch.Stop();
textBox3.Text = Math.Round(Convert.ToDecimal (watch.ElapsedMilliseconds)/1000,4).ToString();
textBox1.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil. Image).ToString();
textBox2.Text=hitungPSNR(Convert.ToDouble(textBox1.Text)).ToStr
ing();
MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan untuk menyimpan citra", "Berhasil", MessageBoxButtons.OK,
MessageBoxIcon.Information); }
void Button1Click(object sender, EventArgs e) // tombol AMF {
Stopwatch watch = new Stopwatch(); watch.Start();
gbrHasil2.Image= AdaptiveMedianFilter((Bitmap)gbrAsli.Image,3); gbrHasil2.SizeMode = PictureBoxSizeMode.StretchImage;
watch.Stop();
textBox6.Text = Math.Round(Convert.ToDecimal (watch.ElapsedMilliseconds)/1000,4).ToString();
textBox4.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil2. Image).ToString();
textBox5.Text=hitungPSNR(Convert.ToDouble(textBox4.Text)).ToStri
ng();
MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan
untuk menyimpan
citra", "Berhasil", MessageBoxButtons.OK, MessageBoxIcon.Information) ;
}
void Button2Click(object sender, EventArgs e)// tombol Wiener+AMF {
Stopwatch watch = new Stopwatch(); watch.Start();
gbrHasil3.Image=AdaptiveMedianFilter((Bitmap)gbrHasil.Image,3); gbrHasil3.SizeMode = PictureBoxSizeMode.StretchImage;
textBox7.Text = (Math.Round(Convert.ToDecimal
(watch.ElapsedMilliseconds)/1000,4)+decimal.Parse(textBox3.Text)).ToS
tring();
textBox8.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil3 .Image).ToString();
textBox9.Text=hitungPSNR(Convert.ToDouble(textBox4.Text)).ToStr
ing();
MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan untuk menyimpan
citra", "Berhasil", MessageBoxButtons.OK, MessageBoxIcon.Information) ;
}
Bitmap AdaptiveMedianFilter(Bitmap sourceImage, int size) {
Bitmap bmp;
Bitmap asli = (Bitmap)sourceImage;
bmp = new Bitmap(asli.Width,asli.Height);
List<List<int>>r = red(sourceImage, size); // array utk menampung nilai red
List<List<int>>b = blue(sourceImage, size); // array utk menampung nilai blue
List<List<int>>g = green(sourceImage, size); // array untuk menampung nilai green
for (int i = 0;i < sourceImage.Width;i++){ for (int j =0;j < sourceImage.Height;j++){
bmp.SetPixel(i, j, Color.FromArgb(r[i][j],g[i][j ],b[i][j])); // menampung nilai pixel rgb
} }
return bmp; }
List<List<int>> red(Image sourceImage, int kernelsize) {
Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;
List<int> r = new List<int>();
List<List<int>> outr = new List<List<int>>();
Color d;
for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();
for (int j = 0;j<sourceImage.Height;j++){
while(true){
for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;
int x2 = y+j;
sourceImage.Width): Math.Abs(x1);//ini pengkondisian di mana jendela filter tidak melewati batas dari ukuran image
x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);
d = asli.GetPixel(x1, x2); r.Add(d.R);
} }
r.Sort();//pengurutan
int imedian = r.Count/2;//indeks median
int a1 = r[imedian] - r[0];//Level A --> Zmed - Zmin
int a2 = r[imedian] - r[r.Count-1]; // Zmed - Zmax
if (a1 > 0 && a2 < 0) //Jika memenuhi ke level B
{
int b1 = asli.GetPixel(i, j).R r[0];//Level B --> Zxy - Zmin
int b2 = asli.GetPixel(i, j).R r[r.Count-1]; // Zxy - Zmax
if (b1 > 0 && b2 < 0)
nilai.Add(asli.GetPixel(i, j).R);//ou tput Zxy
else
nilai.Add(r[imedian]);//output Zmed r.Clear();
batas = kernelsize/2; break;
}
else if (batas < kernelsize/2 + 2)//jika tidak memenuhi persyaratan, ke level B
{
batas += 1;//menambah batas jendela filter menjadi 5
r.Clear();
continue;//ulangi level A }
else {
nilai.Add(asli.GetPixel(i, j).R); // ditampung nilai hasilnya
r.Clear();
batas = kernelsize/2; break;
} } }
outr.Add(nilai); }
}
List<List<int>> green(Image sourceImage, int kernelsize) {
Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;
List<int> r = new List<int>();
List<List<int>> outr = new List<List<int>>(); Color d;
for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();
for (int j = 0;j<sourceImage.Height;j++){
while(true){
for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;
int x2 = y+j;
x1 = Math.Abs(x1) >= sourceImage.Width ? sourceImage.Width2(Math.Abs(x1) sourceImage.Width): Math.Abs(x1);
x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);
d = asli.GetPixel(x1, x2); r.Add(d.G);
} }
r.Sort();
int imedian = r.Count/2; int a1 = r[imedian] - r[0];
int a2 = r[imedian] - r[r.Count-1]; if (a1 > 0 && a2 < 0){
int b1 = asli.GetPixel(i, j).G - r[0]; int b2 = asli.GetPixel(i, j).G
r[r.Count-1];
if (b1 > 0 && b2 < 0)
nilai.Add(asli.GetPixel(i, j).G); else
nilai.Add(r[imedian]); r.Clear();
batas = kernelsize/2; break;
}
else if (batas < kernelsize/2 + 2){ batas += 1;
r.Clear();
continue; }
nilai.Add(asli.GetPixel(i, j).G); r.Clear();
batas = kernelsize/2; break;
} } }
outr.Add(nilai); //nilai.Clear(); }
return outr; }
List<List<int>> blue(Image sourceImage, int kernelsize) {
Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;
List<int> r = new List<int>();
List<List<int>> outr = new List<List<int>>(); Color d;
for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();
for (int j = 0;j<sourceImage.Height;j++){ while(true){
for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;
int x2 = y+j;
x1 = Math.Abs(x1) >= sourceImage.Width ? sourceImage.Width2(Math.Abs(x1) sourceImage.Width): Math.Abs(x1);
x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);
d = asli.GetPixel(x1, x2); r.Add(d.B);
} }
r.Sort();
int imedian = r.Count/2; int a1 = r[imedian] - r[0];
int a2 = r[imedian] - r[r.Count-1]; if (a1 > 0 && a2 < 0){
int b1 = asli.GetPixel(i, j).B - r[0]; int b2 = asli.GetPixel(i, j).B
r[r.Count-1];
if (b1 > 0 && b2 < 0)
nilai.Add(asli.GetPixel(i, j).B); else
r.Clear();
batas = kernelsize/2; break;
}
else if (batas < kernelsize/2 + 2){
batas += 1; r.Clear(); continue; }
else{
nilai.Add(asli.GetPixel(i, j).B); r.Clear();
batas = kernelsize/2; break;
} } }
outr.Add(nilai); }
return outr; }
void Button4Click(object sender, EventArgs e) // button reset {
gbrAsli.Image = null; gbrHasil.Image = null; gbrHasil2.Image = null; gbrHasil3.Image = null; textBox1.Text = null; textBox2.Text = null; textBox3.Text = null; textBox4.Text = null; textBox5.Text = null; textBox6.Text = null; textBox7.Text = null; textBox8.Text = null; textBox9.Text = null; textBox10.Text = null; textBox11.Text = null; textBox12.Text = null; ukuran.Text = null; }
3.
Kode Program Class FFTN (Wiener Filter) :
using System;
using System.Drawing;
using System.Windows.Forms;
namespace skrips
{
/// Description of FFT. /// </summary>
public class FFTN {
public struct Complex{ public double real; public double imag; }
Bitmap gbrhasil;
Complex [][] Rgambar, Ggambar, Bgambar, shiftR, shiftG, shift B;
int nx,ny; int [,] R,G,B;
public FFTN(Image sourceImage) {
gbrhasil
= new Bitmap(sourceImage.Width,sourceImage.Height); nx = sourceImage.Width;
ny = sourceImage.Height;
Rgambar = new Complex[sourceImage.Width][]; Ggambar = new Complex[sourceImage.Width][]; Bgambar = new Complex[sourceImage.Width][]; shiftR = new Complex[sourceImage.Width][]; shiftG = new Complex[sourceImage.Width][]; shiftB = new Complex[sourceImage.Width][]; for (int i = 0;i < sourceImage.Width;i++){
Rgambar[i] = new Complex[sourceImage.Height]; Ggambar[i] = new Complex[sourceImage.Height]; Bgambar[i] = new Complex[sourceImage.Height]; shiftR[i] = new Complex[sourceImage.Height]; shiftG[i] = new Complex[sourceImage.Height]; shiftB[i] = new Complex[sourceImage.Height]; for (int j = 0;j < sourceImage.Height;j++){ Rgambar[i][j].real
= ((Bitmap)sourceImage).GetPixel(i, j).R; Ggambar[i][j].real = ((Bitmap)sourceImage).GetPixel(i, j).G; Bgambar[i][j].real = ((Bitmap)sourceImage).GetPixel(i, j).B;
Rgambar[i][j].imag = 0; Ggambar[i][j].imag = 0; Bgambar[i][j].imag = 0; }
} }
R = Plot(shiftR); G = Plot(shiftG); B = Plot(shiftB); RemoveFFTShift(); Hitung();
}
void ForwardFFT(Complex [][] gambar){ //Transform the Rows
double [] real = new double[gambar.Length]; double [] imag = new double[gambar.Length]; for (int i=0; i<gambar[0].Length; i++){ for (int j = 0; j<gambar.Length; j++){ real[j] = gambar[j][i].real;
imag[j] = gambar[j][i].imag; }
FFT1D(real,imag);//baris for (int j = 0; j<nx; j++){ gambar[j][i].real = real[j]; gambar[j][i].imag = imag[j]; }
}
for (int i = 0; i<10; i++)
real = new double[gambar[0].Length]; imag = new double[gambar[0].Length]; for (int i = 0; i<gambar.Length; i++){
for (int j = 0; j<gambar[0].Length; j++){ real[j] = gambar[i][j].real;
imag[j] = gambar[i][j].imag; }
FFT1D(real,imag);//kolom for (int j = 0; j<ny; j++){ gambar[i][j].real = real[j]; gambar[i][j].imag = imag[j]; }
} }
void FFT1D(double [] real, double [] imag){ int length = real.Length,n;
double Theta = 3.14 / length; double real2 = Math.Cos(Theta); double imag2 = Math.Sin(Theta); int k = length;
double temp; while (k > 1){ n = k; k >>= 1; temp = real2;
imag2 = (imag2*temp) + (temp*imag2); double real1 = 1;
double imag1 = 0;
for (int l = 0;l < k;l++){
for (int a = l;a < length; a+=n){ int b = a + k;
double real3 = real[a] - real[b]; double imag3 = imag[a] - imag[b]; real[a] += real[b];
imag[a] += imag[b];
real[b] = (real3 * real1) - (imag3 * imag1); imag[b] = (imag3 * real1) + (real3 * imag1); }
temp = real1;
real1 = (real1 * real2) - (imag1 * imag2); imag1 = (imag1 * real2) + (temp * imag2); }
}
int m = (int)(Math.Log10(length)/Math.Log10(2)); for (int a = 0;a < length; a++){
long b = a; b
= (((b & 0xaaaaaaaa) >> 1) | ((b & 0x55555555) << 1)); b
= (((b & 0xcccccccc) >> 2) | ((b & 0x33333333) << 2)); b
= (((b & 0xf0f0f0f0) >> 4) | ((b & 0x0f0f0f0f) << 4)); b
= (((b & 0xff00ff00) >> 8) | ((b & 0x00ff00ff) << 8)); b = ((b >> 16) | (b << 16)) >> (32 - m); if (b > a){
double real4 = real[a]; double imag4 = imag[a]; real[a] = real[b]; imag[a] = imag[b]; real[b] = real4; imag[b] = imag4; }
} }
public void FFTShift() {
int i, j;
for (i = 0; i <= (ny / 2) - 1; ++i) {
for (j = 0; j <= (nx / 2) - 1; ++j) {
shiftR[i + (nx / 2)][ j + (ny / 2)] = Rgambar[i][j];
Rgambar[i + (nx / 2)][ j + (ny / 2)];
shiftR[i + (nx / 2)][j] = Rgambar[i][ j + (ny / 2)];
shiftR[i][ j + (nx / 2)] = Rgambar[i + (nx /2)][ j];
shiftG[i + (nx / 2)][ j + (ny / 2)] = Ggambar[i][j];
shiftG[i][ j] = Ggambar[i + (nx / 2)][ j + (ny / 2)];
shiftG[i + (nx / 2)][ j] = Ggambar[i][ j + (ny / 2)];
shiftG[i][ j + (nx / 2)] = Ggambar[i + (nx /2)][ j];
shiftB[i + (nx / 2)][ j + (ny / 2)] = Bgambar[i][j];
shiftB[i][ j] = Bgambar[i + (nx / 2)][ j + (ny / 2)];
shiftB[i + (nx / 2)][ j] = Bgambar[i][ j + (ny / 2)];
shiftB[i][ j + (nx / 2)] = Bgambar[i + (nx /2)][ j];
} } return; }
public void RemoveFFTShift() {
int i, j;
for (i = 0; i <= (nx / 2) - 1; i++) for (j = 0; j <= (ny / 2) - 1; j++) {
Rgambar[i + (nx / 2)][ j + (ny / 2)] = shiftR[i][ j];
Rgambar[i][ j] = shiftR[i + (nx / 2)][ j + (ny / 2)];
Rgambar[i + (nx / 2)][ j] = shiftR[i][ j + (ny / 2)];
Rgambar[i][ j + (nx / 2)] = shiftR[i + (nx / 2)][ j];
Ggambar[i + (nx / 2)][ j + (ny / 2)] = shiftG[i][ j];
Ggambar[i][ j] = shiftG[i + (nx / 2)][ j + (ny / 2)];
Ggambar[i + (nx / 2)][ j] = shiftG[i][ j + (ny / 2)];
Ggambar[i][ j + (nx / 2)] = shiftG[i + (nx / 2)][ j];
Bgambar[i + (nx / 2)][ j + (ny / 2)] = shiftB[i][ j];
Bgambar[i + (nx / 2)][ j] = shiftB[i][ j + (ny / 2)];
Bgambar[i][ j + (nx / 2)] = shiftB[i + (nx / 2)][ j];
}
}
public Bitmap InverseFFT(){ // proses dari inverse FFT int i, j;
Conjugate(Rgambar); Conjugate(Ggambar); Conjugate(Bgambar); ForwardFFT(Rgambar); ForwardFFT(Ggambar);
ForwardFFT(Bgambar); // FFT 1D Conjugate(Rgambar);
Conjugate(Ggambar); Conjugate(Bgambar); byte R,G,B;
for (i = 0; i <= nx - 1; i++) for (j = 0; j <= ny - 1; j++) {
R
= (byte)Math.Abs(Rgambar[i][j].real / (nx * ny)); G
= (byte)Math.Abs(Ggambar[i][j].real / (nx * ny)); B
= (byte)Math.Abs(Bgambar[i][j].real / (nx * ny));
gbrhasil.SetPixel (i, j, Color.FromArgb(R,G,B)); // tampung ke nilai piksel
}
return gbrhasil; }
void Conjugate(Complex [][] G){
for (int i = 0;i < G.Length;i++){
for (int j = 0;j < G[i].Length;j++){ G[i][j].imag *= -1;
} } }
public int [,] Plot(Complex [][] shift){ Bitmap a = new Bitmap(nx, ny);
int i, j; float max;
float[,] FFTLog = new float[nx, ny]; float[,] FFTPhaseLog = new float[nx, ny];
float[,] FourierMagnitude = new float[nx, ny]; // bilangan real dalam Transformasi Fourier
float[,] FourierPhase
int[,] FFTNormalized = new int[nx, ny]; int[,] FFTPhaseNormalized = new int[nx, ny]; for (i = 0; i <nx; i++)
for (j = 0; j <ny; j++) {
FourierMagnitude[i, j] = (float)Math.Sqrt((sh ift[i][j].real * shift[i][j].real)+(shift[i][j].imag * shift[i][j].im ag));
FourierPhase[i, j] =(float) Math.Atan(shift[i ][j].real/shift[i][j].imag);
FFTLog[i, j] = (float)Math.Log(1 + FourierMag nitude[i, j]);
FFTPhaseLog[i, j] = (float)Math.Log(1 + Math.Abs( FourierPhase[i, j]));
}
max = FFTLog[0, 0]; for (i = 0; i <nx; i++) for (j = 0; j <ny; j++) {
if (FFTLog[i, j] > max) max = FFTLog[i, j]; }
for (i = 0; i <nx ; i++) for (j = 0; j <ny; j++) {
FFTLog[i, j] = FFTLog[i, j] / max; }
for (i = 0; i <nx; i++) for (j = 0; j <ny; j++) {
FFTNormalized[i, j] = (int)(2000*FFTLog[i, j]); }
return FFTNormalized; }
void Hitung(){ // perhitungan Wiener Filter for (int i = 0;i < nx; i++){
for (int j = 0;j < ny; j++){
Rgambar[i][j].real=(Rgambar[i][j].real*R[i,j])/((R[i,j])+100); Ggambar[i][j].real=(Ggambar[i][j].real*G[i,j])/((G[i,j])+100); Bgambar[i][j].real=(Bgambar[i][j].real*B[i,j])/((B[i,j])+100); Rgambar[i][j].imag=(Rgambar[i][j].imag*R[i,j])/((R[i,j])+100); Ggambar[i][j].imag=(Ggambar[i][j].imag*G[i,j])/((G[i,j])+100); Bgambar[i][j].imag=(Bgambar[i][j].imag*B[i,j])/((B[i,j])+100); }
4.
Kode Program Form Help
using System;
using System.Drawing;
using System.Windows.Forms;
namespace skrips
{
/// <summary>
/// Description of Help.
/// </summary>
public partial class Help : Form
{
public Help()
{
//
// The InitializeComponent() call is required for Windows
Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the
InitializeComponent() call.
//
}
void Label1Click(object sender, EventArgs e)
{
}
void BalikClick(object sender, EventArgs e)
{
this.Dispose();
}
}