LISTING PROGRAM
1.
Form Home
using System;
using System.Collections.Generic; using System.Drawing;
using System.Windows.Forms;
namespace Program_Skripsi {
public partial class MainForm : Form {
public MainForm() {
InitializeComponent(); }
//menu untuk masuk ke form pengujian
void PengujianToolStripMenuItemClick(object sender, EventArgs e) {
FormPengujian f2 = new FormPengujian(); f2.ShowDialog();
this.Dispose(); }
//menu untuk masuk ke form hasil
void HasilToolStripMenuItemClick(object sender, EventArgs e) {
FormHasil f2 = new FormHasil(); f2.ShowDialog();
this.Dispose(); }
//menu untuk masuk ke form help
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
FormHelp f2 = new FormHelp(); f2.ShowDialog();
this.Dispose(); }
//menu untuk masuk ke form about
void AboutToolStripMenuItemClick(object sender, EventArgs e) {
FormAbout f2 = new FormAbout(); f2.ShowDialog();
this.Dispose(); }
//menu untuk keluar dari aplikasi
void ExitToolStripMenuItem1Click(object sender, EventArgs e) {
== DialogResult.Yes)
Application.Exit(); }
} }
2.
Form Pengujian
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing;
using System.Drawing.Imaging; using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Diagnostics;
using System.IO;
namespace Program_Skripsi {
public partial class FormPengujian : Form {
bool bitdeviasi; double Deviasi; double proba;
IntPtr point = IntPtr.Zero; int[,] pixelImage;
double[,] tapisHighBoost; double A;
double w;
double runtime;
//menu untuk masuk ke form home
void HomeToolStripMenuItemClick(object sender, EventArgs e) {
MainForm f2 = new MainForm(); f2.ShowDialog();
this.Dispose(); }
//menu untuk masuk ke form pengujian
void HasilToolStripMenuItemClick(object sender, EventArgs e) {
FormHasil f2 = new FormHasil(); f2.ShowDialog();
this.Dispose(); }
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
FormHelp f2 = new FormHelp(); f2.ShowDialog();
this.Dispose(); }
//menu untuk masuk ke form about
void AboutToolStripMenuItemClick(object sender, EventArgs e) {
FormAbout f2 = new FormAbout(); f2.ShowDialog();
this.Dispose(); }
//menu untuk keluar dari aplikasi
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
//tombol browse untuk menginput objek
void Button1Click(object sender, EventArgs e) {
try {
OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image Files( *.bmp)|*.bmp"; if (open.ShowDialog() == DialogResult.OK) {
Bitmap bit = new Bitmap(open.FileName); if (bit.Height <= 300 && bit.Width <= 300) {
pictureBox1.Image = bit; pictureBox2.Image = bit; }
else
MessageBox.Show("Image Pixel must be 300x300 px", "Warning"); }
}
catch (Exception) {
throw new ApplicationException("Failed loading image"); }
}
//tombol clear untuk menghapus objek void Button6Click(object sender, EventArgs e) {
pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null;
textBox3.Text="";
textBox4.Text=""; }
//fungsi untuk memanggil bilangan gaussian pada Gaussian noise private double getGaussianNumber()
{
Random rnd = new Random(); double v1, v2, persegi; if (bitdeviasi)
{
bitdeviasi = false; return Deviasi * 1; }
do {
v1 = 2 * rnd.NextDouble() - 1; v2 = 2 * rnd.NextDouble() - 1; persegi = v1 * v1 + v2 * v2;
}
while (persegi >= 1 || persegi == 0);
var kutup = Math.Sqrt(-2 * Math.Log(persegi) / persegi);
Deviasi = v2 * kutup; bitdeviasi = true;
return v1 * kutup; }
//tombol radio button untuk memilih Gaussian noise void RadioButton1CheckedChanged(object sender, EventArgs e) {
if(radioButton1.Checked) {
Bitmap citraasli = new Bitmap(pictureBox1.Image); int x = citraasli.Width;
int y = citraasli.Height; Bitmap citrahasil = citraasli; if ((comboBox1.Text) == "10%") proba = 10;
else if ((comboBox1.Text) == "20%") proba = 20;
else if ((comboBox1.Text) == "30%") proba = 30;
else if ((comboBox1.Text) == "40%") proba = 40;
else if ((comboBox1.Text) == "50%") proba = 50;
double gaussnumber = 0.0;
int step, newpixel, PixelSize = x * y; BitmapData bmpData = null;
byte[] Pixels;
Random rnd = new Random();
int Depth = System.Drawing.Bitmap.GetPixelFormatSize (citraasli.PixelFormat);
step = Depth / 8;
bmpData = citraasli.LockBits(box, ImageLockMode.ReadWrite, citraasli.PixelFormat);
Pixels = new byte[PixelSize * step]; point = bmpData.Scan0;
Marshal.Copy(point, Pixels, 0, Pixels.Length);
for (int i = 0; i < Pixels.Length; i += step) {
if (i < Pixels.Length - step) {
for (int j = 0; j < step; j++) {
gaussnumber = getGaussianNumber();
newpixel = Convert.ToInt32(gaussnumber * proba) + Convert.ToInt32(Pixels[i + j]);
if (newpixel < 0) newpixel = 0; if (newpixel > 255) newpixel = 255;
Pixels[i + j] = Convert.ToByte(newpixel); }
} }
Marshal.Copy(Pixels, 0, point, Pixels.Length); citraasli.UnlockBits(bmpData);
pictureBox2.Image=citraasli; pictureBox3.Image=citraasli;
} }
//tombol radio button untuk memilih Salt and Pepper noise void RadioButton2CheckedChanged(object sender, EventArgs e) {
if(radioButton2.Checked) {
Bitmap citraasli = new Bitmap(pictureBox1.Image); int x = citraasli.Width;
int y = citraasli.Height; Bitmap citrahasil = citraasli; if ((comboBox1.Text) == "10%") proba = Convert.ToInt32(0.1*x*y); else if ((comboBox1.Text) == "20%") proba = Convert.ToInt32(0.2*x*y); else if ((comboBox1.Text) == "30%") proba = Convert.ToInt32(0.3*x*y); else if ((comboBox1.Text) == "40%") proba = Convert.ToInt32(0.4*x*y); else if ((comboBox1.Text) == "50%") proba = Convert.ToInt32(0.5*x*y); int x1,y1,val;
Random rnd = new Random();
{
x1 = rnd.Next(0,x-1); y1 = rnd.Next(0,y-1); val = rnd.Next(1,10); if (val <= 5)
{
citrahasil.SetPixel(x1,y1,Color.FromArgb(255,0,0,0)); }
else {
citrahasil.SetPixel(x1,y1,Color.FromArgb(255,255,255,255)); }
}
pictureBox2.Image=citraasli; pictureBox3.Image=citrahasil; }
}
//tombol save untuk menyimpan image noise void Button2Click(object sender, EventArgs e) {
if (pictureBox2.Image != null) {
SaveFileDialog simpan = new SaveFileDialog(); simpan.Filter = "Image Files|*.bmp";
simpan.FileName = "*.bmp";
if (simpan.ShowDialog() == DialogResult.OK) {
pictureBox2.Image.Save(simpan.FileName, System.Drawing.Imaging.Ima geFormat.Bmp);
string filename=simpan.FileName.Substring(0,simpan.FileName.Length - 4) + ".txt";
FileStream fstream=new FileStream(filename,FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);
string jenis="";
if(radioButton1.Checked==true){ jenis=radioButton1.Text; }if(radioButton2.Checked==true){ jenis=radioButton2.Text; }
sw.WriteLine(jenis + "/" + comboBox1.Text); sw.Flush();
sw.Close();
MessageBox.Show("Image Noise Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information); }
} else {
}
//fungsi deteksi tepi Laplacian of Gaussian private Bitmap LoG12x12(Bitmap SrcImage) {
double[,] MASK = new double[12, 12] {
{-0.000699762,-0.000817119,-0.000899703,-0.000929447, -0.000917118,-0.000896245,-0.000896245,-0.000917118, -0.000929447,-0.000899703,-0.000817119,-0.000699762},
{-0.000817119,-0.000914231,-0.000917118,-0.000813449, -0.000655442,-0.000538547,-0.000538547,-0.000655442, -0.000813449,-0.000917118,-0.000914231,-0.000817119},
{-0.000899703,-0.000917118,-0.000745635,-0.000389918, -0.0000268,0.000309618,0.000309618,0.0000268, -0.000389918,-0.000745635,-0.000917118,-0.000899703},
{-0.000929447,-0.000813449,-0.000389918, 0.000309618, 0.001069552, 0.00156934, 0.00156934, 0.001069552, 0.000309618,-0.000389918,-0.000813449,-0.000929447},
{-0.000917118,0.000655442, 0.0000268, 0.001069552, 0.002167033, 0.002878738, 0.002878738, 0.002167033, 0.001069552, 0.0000268, -0.000655442, -0.000917118},
{-0.000896245,-0.000538547, 0.000309618, 0.00156934, 0.002878738, 0.003722998, 0.003722998, 0.002878738, 0.00156934, 0.000309618, -0.000538547,-0.000896245},
{-0.000896245, 0.000538547, 0.000309618, 0.00156934, 0.002878738, 0.003722998, 0.003722998, 0.002878738, 0.00156934, 0.000309618, -0.000538547,-0.000896245},
{-0.000917118,-0.000655442, 0.0000268,0.001069552, 0.002167033,0.002878738,0.002878738,0.002167033, 0.001069552, 0.0000268,-0.000655442,-0.000917118},
{-0.000929447, -0.000813449, -0.000389918, 0.000309618, 0.001069552, 0.00156934, 0.00156934, 0.001069552, 0.000309618, -0.000389918, -0.000813449, -0.000929447},
{-0.000899703, -0.000917118, -0.000745635,-0.000389918, 0.0000268, 0.000309618, 0.000309618, 0.0000268,
-0.000389918, -0.000745635, -0.000917118, -0.000899703},
{-0.000817119, -0.000914231, -0.000917118,-0.000813449, -0.000655442, -0.000538547, -0.000538547,-0.000655442, -0.000813449, -0.000917118, -0.000914231,-0.000817119},
-0.000929447, -0.000899703, -0.000817119,-0.000699762} };
double nTemp = 0.0; double c = 0;
int mdl, size; size = 12; mdl = size/2; double min, max; min = max = 0.0;
double sum = 0.0; double mean; double d = 0.0; double s = 0.0; int n = 0;
Bitmap bitmap = new Bitmap (SrcImage.Width+mdl,SrcImage.Height+mdl); int l, k;
BitmapData bitmapData = bitmap.LockBits (new Rectangle(0,0,
bitmap.Width,bitmap.Height),ImageLockMode.ReadWrite,PixelFormat.Format24 bppRgb);
BitmapData srcData = SrcImage.LockBits(new Rectangle(0,0,SrcImage.Width, SrcImage.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
unsafe {
int offset = 3;
for (int colm = 0; colm < srcData.Height - size; colm++) {
byte* ptr = (byte*)srcData.Scan0+(colm*srcData.Stride);
byte* bitmapPtr = (byte*)bitmapData.Scan0+(colm*bitmapData.Stride);
for (int row = 0; row < srcData.Width - size; row++) {
nTemp = 0.0;
min = double.MaxValue; max = double.MinValue;
for (k = 0; k < size; k++) {
for (l = 0; l < size; l++) {
byte* tempPtr = (byte*)srcData.Scan0+((colm+l)*srcData.Stride); c=(tempPtr[((row + k)*offset)]+tempPtr[((row + k) *offset) + 1] + tempPtr[((row + k) * offset) + 2]) / 3;
nTemp += (double)c * MASK[k, l];
sum += nTemp; n++;
} }
mean = ((double)sum / n); d = 0.0;
for (int i = 0; i < srcData.Height - size; i++) {
byte* ptr=(byte*)srcData.Scan0+(i*srcData.Stride);
byte* tptr=(byte*)bitmapData.Scan0+(i*bitmapData.Stride);
for (int j = 0; j < srcData.Width - size; j++) {
nTemp = 0.0;
min = double.MaxValue; max = double.MinValue;
for (k = 0; k < size; k++) {
for (l = 0; l < size; l++) {
byte* tempPtr = (byte*) srcData.Scan0 + ((i + l)*srcData.Stride); c = (tempPtr[((j + k) * offset)]+tempPtr[((j + k)*offset)+ 1] + tempPtr[((j + k) * offset) + 2]) / 3;
nTemp += (double)c * MASK[k, l];
} }
s = (mean - nTemp); d += (s * s);
} }
d = d / (n - 1); d = Math.Sqrt(d); d = d * 2;
for (int colm = mdl; colm < srcData.Height - mdl; colm++) {
byte* ptr = (byte*)srcData.Scan0 + (colm * srcData.Stride);
byte* bitmapPtr =(byte*)bitmapData.Scan0 + (colm*bitmapData.Stride);
for (int row = mdl; row < srcData.Width - mdl; row++) {
nTemp = 0.0;
min = double.MaxValue; max = double.MinValue;
for (k = (mdl * -1); k < mdl; k++) {
{
byte* tempPtr = (byte*)srcData.Scan0+((colm +l)*srcData.Stride); c= (tempPtr[((row + k)*offset)]+tempPtr[((row+k)*offset)+ 1] + tempPtr[((row + k) * offset) + 2]) / 3;
nTemp += (double)c * MASK[mdl + k, mdl + l];
} }
if (nTemp > d) {
bitmapPtr[row * offset] = bitmapPtr[row * offset + 1] = bitmapPtr[row * offset + 2 = 255;
} else
bitmapPtr[row * offset] = bitmapPtr[row * offset + 1] = bitmapPtr[row * offset + 2] = 0;
} } }
bitmap.UnlockBits(bitmapData); SrcImage.UnlockBits(srcData);
return bitmap; }
//tombol radio button untuk memilih operator deteksi tepi Laplacian of Gaussian
void RadioButton3CheckedChanged(object sender, EventArgs e) {
Stopwatch sw = new Stopwatch(); sw.Start();
Bitmap citraasli = new Bitmap(pictureBox2.Image); pictureBox3.Image = LoG12x12(citraasli);
sw.Stop();
runtime = Math.Round(Convert.ToDouble(sw.ElapsedMilliseconds)/1000,4); }
//fungsi untuk High Boost filtering private double HighBoost(int x, int y) {
double Hasil = 0; int row = x; int col = y;
for (int i = 0; i < 3; i++) {
col = y;
for (int j = 0; j < 3; j++) {
Hasil += pixelImage[row, col] * tapisHighBoost[i, j]; col++;
row++; }
double HighBoost = ((A-1)* pixelImage[x, y]) + Hasil; //MessageBox.Show(pixelImage[x,y].ToString());
return HighBoost; }
//tombol radio button untuk memilih operator deteksi tepi Laplacian of Gaussian kombinasi High Boost filtering
void RadioButton5CheckedChanged(object sender, EventArgs e) {
//Tentukan Tapishighboost if(radioButton5.Checked) {
try {
A= Convert.ToDouble(textBox1.Text); if ( A <= 2)
{
Stopwatch sw = new Stopwatch(); sw.Start();
w = (9 * A) - 1;
tapisHighBoost = new double[3, 3] { {-1,-1,-1}, {-1, w,-1}, {-1,-1,-1}};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
tapisHighBoost[i, j] = (1.0 / 9.0) * tapisHighBoost[i, j]; }
}
//proses filtering
Bitmap image = new Bitmap(pictureBox2.Image);
Bitmap output = new Bitmap(image.Width, image.Height); int pixel;
pixelImage = new int[image.Height, image.Width]; for (int i = 0; i < image.Height; i++)
{
for (int j = 0; j < image.Width; j++) {
pixelImage[i, j] = image.GetPixel(j, i).R; }
}
for (int i = 0; i < image.Height - 2; i++) {
for (int j = 0; j < image.Width - 2; j++) {
pixel = Convert.ToInt32(HighBoost(i, j)); if (pixel < 0)
pixel *= -1; if (pixel > 255) pixel = 255;
pixel, pixel)); }
}
pictureBox3.Image = LoG12x12(output); sw.Stop();
runtime = Math.Round(Convert.ToDouble(sw.ElapsedMilliseconds)/1000,4); }
else {
MessageBox.Show("Nilai A harus <=2"); }
}
catch (Exception) {
MessageBox.Show("Nilai A harus diisi"); }
} }
//fungsi menghitung nilai MSE
private 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 = sum / (imageAsli.Height * imageAsli.Width); return MSE;
}
//fungsi menghitung nilai PSNR
private double hitungPSNR(double MSE) {
double PSNR = Math.Log10(Math.Pow(255, 2) / MSE); return PSNR;
}
//tombol untuk menampilkan nilai MSE,PSNR dan running time void Button3Click(object sender, EventArgs e)
{
double MSE = hitungMSE((Bitmap)pictureBox1.Image,(Bitmap) pictureBox3.Image);
double PSNR = hitungPSNR(MSE);
textBox2.Text = Math.Round(Convert.ToDecimal(MSE.ToString()), 4) .ToString();
textBox3.Text = Math.Round(Convert.ToDecimal(PSNR.ToString()),4) .ToString();
} } }
//tombol untuk menyimpan image hasil deteksi tepi void Button4Click(object sender, EventArgs e) {
if (pictureBox3.Image != null) {
SaveFileDialog simpan = new SaveFileDialog(); simpan.Filter = "Image Files|*.bmp";
simpan.FileName = "*.bmp";
if (simpan.ShowDialog() == DialogResult.OK) {
pictureBox3.Image.Save(simpan.FileName, System.Drawi ng.Imaging.ImageFormat.Bmp);
string jenis="";
if(radioButton3.Checked==true){ jenis="log";
}if(radioButton5.Checked==true){ jenis="hog";
}
swi.Write("?" + jenis + "?"+ simpan.FileName + "?" + textBox2.Text + "?" + textBox3.Text + "?" + textBox4.Text);
swi.Flush();
MessageBox.Show("Image Deteksi Tepi Telah
Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information); }
} else {
MessageBox.Show("Image Deteksi Tepi Tidak Ada"); }
}
//tombol untuk menghapus semua data yang telah di proses void Button5Click(object sender, EventArgs e)
{
pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null; radioButton1.Checked = false; radioButton2.Checked = false; textBox2.Text = "";
3.
Form Hasil
using System;
using System.Drawing;
using System.Windows.Forms; using System.IO;
namespace Program_Skripsi {
public partial class FormHasil : Form {
public FormHasil() {
InitializeComponent(); }
// menu untuk menuju form home
void HomeToolStripMenuItemClick(object sender, EventArgs e) {
MainForm f2 = new MainForm(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form pengujian
void PengujianToolStripMenuItemClick(object sender, EventArgs e)
{
FormPengujian f2 = new FormPengujian(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form help
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
FormHelp f2 = new FormHelp(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form about
void AboutToolStripMenuItemClick(object sender, EventArgs e) {
FormAbout f2 = new FormAbout(); f2.ShowDialog();
this.Dispose(); }
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?","Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
//tombol untuk membuka file citra asli void Button1Click(object sender, EventArgs e) {
try {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.bmp)|*.bmp|All Files(*.*)|*.*"; if (open.ShowDialog() == DialogResult.OK)
{
Bitmap bit = new Bitmap(open.FileName); pictureBox1.Image = bit;
long fileSize = new System.IO.FileInfo(open.FileName).Length; if (fileSize / 1000 < 1)
{
textBox2.Text = fileSize.ToString(); label6.Text = "Byte";
} else {
textBox2.Text = (fileSize / 1000).ToString(); label12.Text = "Kb";
}
string pixel = "";
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
pixel += bit.GetPixel(j, i).R + " "; }
pixel += "\r\n"; }
// location.Text = Path.GetFullPath(open.FileName); textBox1.Text = Path.GetFileName(open.FileName); // height.Text = bit.Height.ToString();
// width.Text = bit.Width.ToString(); }
}
throw new ApplicationException("Failed loading image"); }
}
//tombol untuk membuka file citra noise dan hasil deteksi tepi
void Button2Click(object sender, EventArgs e) {
try {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.bmp)|*.bmp|All Files(*.*)|*.*"; if (open.ShowDialog() == DialogResult.OK)
{
Bitmap bit = new Bitmap(open.FileName); pictureBox2.Image = bit;
string nama = open.FileName.Substring(0, open.FileName.Length- 4) + ".txt";
FileStream fstream = new FileStream(nama, FileMode.Open, FileAccess.ReadWrite);
StreamReader sreader = new StreamReader(fstream); sreader.BaseStream.Seek(0, SeekOrigin.Begin); string Keterangan = sreader.ReadToEnd(); sreader.Close();
string[] info = new string[2]; info = Keterangan.Split('?'); textBox3.Text = info[0]; textBox4.Text = info[1]; if (info[2] == "log") {
pictureBox4.ImageLocation=@info[3]; textBox5.Text= info[4];
textBox6.Text= info[5]; textBox7.Text= info[6]; }
else {
pictureBox3.ImageLocation=@info[3]; textBox11.Text= info[4];
textBox12.Text= info[5]; textBox13.Text= info[6]; }
if (info[7] == "hog") {
pictureBox3.ImageLocation=@info[8]; textBox11.Text= info[9];
textBox12.Text= info[10]; textBox13.Text= info[11]; }
else {
pictureBox3.ImageLocation=@info[8]; textBox5.Text= info[9];
}
} }
catch (Exception ex) {
MessageBox.Show(ex.Message); }
}
//tombol untuk menghapus semua informasi data void Button5Click(object sender, EventArgs e) {
pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null; pictureBox4.Image = null; textBox1.Text = "";
textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = ""; textBox6.Text = ""; textBox7.Text = ""; textBox11.Text = ""; textBox12.Text = ""; textBox13.Text = ""; }
} }
4.
Form Help
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Program_Skripsi {
public partial class FormHelp : Form {
public FormHelp() {
InitializeComponent();
}
//menu untuk menuju form home
void HomeToolStripMenuItemClick(object sender, EventArgs e) {
MainForm f2 = new MainForm(); f2.ShowDialog();
}
//menu untuk menuju form pengujian
void PengujianToolStripMenuItemClick(object sender, EventArgs e)
{
FormPengujian f2 = new FormPengujian(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form hasil
void HasilToolStripMenuItemClick(object sender, EventArgs e) {
FormHasil f2 = new FormHasil(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form about
void AboutToolStripMenuItemClick(object sender, EventArgs e) {
FormAbout f2 = new FormAbout(); f2.ShowDialog();
this.Dispose(); }
//menu untuk keluar dari aplikasi
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
} }
5.
Form About
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Program_Skripsi {
public partial class FormAbout : Form {
public FormAbout() {
InitializeComponent(); }
//menu untuk menuju form home
void HomeToolStripMenuItemClick(object sender, EventArgs e) {
MainForm f2 = new MainForm(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form pengujian
void PengujianToolStripMenuItemClick(object sender, EventArgs e)
{
FormPengujian f2 = new FormPengujian(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form hasil
void HasilToolStripMenuItemClick(object sender, EventArgs e) {
FormHasil f2 = new FormHasil(); f2.ShowDialog();
this.Dispose(); }
//menu untuk menuju form help
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
FormHelp f2 = new FormHelp(); f2.ShowDialog();
this.Dispose(); }
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }