//----------------------------------------------------------------------------- private void LoadBitmap_Click(object sender, EventArgs e) // Funkcja przeprowadzająca proces wybrania i wyświetlenia bitmapy w programie. { string path = ""; // Zmienna przechowująca ścieżkę do bitmapy. int imageWidth; // Szerokość bitmapy. int imageHeight; // Wysokość bitmapy. DialogResult result = OpenFileDIalogBitmap.ShowDialog(); // Eksplorator plików. if (result == DialogResult.OK) { correctFile = false; // Plik nie został jeszcze poprawnie wczytany. path = OpenFileDIalogBitmap.FileName; // Przypisanie ścieżki do wybranego pliku. try { BmpPath.Text = path; // Wyświetlenie wybranej ścieżki w programie. loaded = new Bitmap(path); // Załadowanie pliku z podanej ścieżki. LoadedImage.Image = loaded; // Wyświetlenie pliku w programie. imageWidth = LoadedImage.Image.Size.Width; // Wczytanie szerokości bitmapy. imageHeight = LoadedImage.Image.Size.Height; // Wczytanie wysokości bitmapy. LoadedBoxInfo.Text = ("Height: " + imageHeight); // Wyświetlenie informacji o wczytanym pliku. LoadedBoxInfo.AppendText(Environment.NewLine); LoadedBoxInfo.Text += ("Width: " + imageWidth); LoadedImage.SizeMode = PictureBoxSizeMode.Zoom; // Ustawienie wyświetlanego obrazka w centrum pola. correctFile = true; // Wczytany został prawidłowy plik (obraz). } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } } }
private void GenerateButton_Click(object sender, EventArgs e) // Funkcja koordynująca proces wczytywania bitmapy do pamięci (w postaci tabeli wartości pikseli) oraz generowania // nowych wartości. { try { if (!correctFile) // Jeśli nie został wczytany poprawny plik. { MessageBox.Show("Load image first!", "Error"); return; } int newWidth = Convert.ToInt32(NewWidthBox.Text); // Wczytanie szerokości nowej bitmapy. int newHeight = Convert.ToInt32(NewHeightBox.Text); // Wczytanie wysokości nowej bitmapy. clockLoaded = Stopwatch.StartNew(); // Rozpoczęcie zliczania taktów procesora. long[] table = LoadBitmapComponents(loaded); // Wczytanie do tabeli wartości pikseli załadowanej bitmapy. clockLoaded.Stop(); // Zakończenie zliczania taktów procesora - czas wczytywania bitmapy (wartości pikseli) do tabeli. long[] table2 = changeBitmap(table, newWidth, newHeight); // Wyznaczenie wartości pikseli nowotworzonej bitmapy i wczytanie ich do tabeli. generated = SetBitmapComponents(table2, newWidth, newHeight, loaded.PixelFormat); // Tworzenie nowej bitmapy na podstawie wartości pikseli w tabeli. LoadedBoxInfo.Text = ("Height: " + LoadedImage.Image.Size.Height); // Wypisanie wysokości załadowanego obrazu do programu. LoadedBoxInfo.AppendText(Environment.NewLine); LoadedBoxInfo.Text += ("Width: " + LoadedImage.Image.Size.Width); // Wypisanie szerokości załadowanego obrazu do programu. GeneratedImage.Image = generated; // Wyświetlenie utworzonej bitmapy. LoadedBoxInfo.AppendText(Environment.NewLine); // Wypisanie informacji o czasie wczytywania bitmapy do tabeli. LoadedBoxInfo.Text += ("Loading bitmap to memory time: " + clockLoaded.Elapsed.TotalMilliseconds.ToString() + " ms " + clockLoaded.ElapsedTicks.ToString() + " ticks"); GeneratedBoxInfo.Text = ("Height: " + GeneratedImage.Image.Size.Height); // Wypisanie wysokości utworzonego obrazu w programie. GeneratedBoxInfo.AppendText(Environment.NewLine); GeneratedBoxInfo.Text += ("Width: " + GeneratedImage.Image.Size.Width); // Wypisanie szerokości utworzonego obrazu w programie. GeneratedBoxInfo.AppendText(Environment.NewLine); // Wypisanie informacji o czasie generowania nowej bitmapy. GeneratedBoxInfo.Text += ("Generation time: " + clockGenerated.Elapsed.TotalMilliseconds.ToString() + " ms " + clockGenerated.ElapsedTicks.ToString() + " ticks"); GeneratedImage.SizeMode = PictureBoxSizeMode.Zoom; imageIsGenerated = true; } catch (FormatException) { MessageBox.Show("Wrong height or width parameter entered!", "Error"); // Informacja o błędzie. } catch (Exception) { MessageBox.Show("Wrong bitmap type entered.", "Error"); // Informacja o błędzie. } }