示例#1
0
        private void RefImageListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (RefImageListBox.SelectedItem == null)
            {
                return;
            }

            if (RefImageListBox.SelectedItem.GetType() == typeof(ReferenceImageContainer))
            {
                ReferenceImageContainer ric = (ReferenceImageContainer)RefImageListBox.SelectedItem;

                if (ric.ImageData != null)
                {
                    if (ric.Width != m_vm.width2 || ric.Height != m_vm.height2)
                    {
                        m_vm.width2  = (ushort)ric.Width;
                        m_vm.height2 = (ushort)ric.Height;
                        m_vm.bitmap2 = BitmapFactory.New(m_vm.width2, m_vm.height2);
                    }

                    m_imageTool.PostFullGrayscaleImage(ric.ImageData, m_vm.width2, m_vm.height2);

                    m_imageTool.Convert_GrayscaleToColor(m_rangeLower2, m_rangeUpper2);

                    m_imageTool.Download_ColorImage(out m_colorImageData2, m_vm.width2, m_vm.height2);

                    // display the image
                    Int32Rect displayRect = new Int32Rect(0, 0, m_vm.width2, m_vm.height2);
                    m_vm.bitmap2.Lock();
                    m_vm.bitmap2.WritePixels(displayRect, m_colorImageData2, m_vm.width2 * 4, 0);
                    m_vm.bitmap2.Unlock();



                    // calculate the image histogram
                    UInt32[] histogram;
                    m_imageTool.GetHistogram_512(out histogram, 16);

                    // build the histogram image and download it to the CPU
                    byte[] histImage;
                    m_imageTool.GetHistogramImage_512(out histImage, m_histogramImageWidth, m_histogramImageHeight, 0);

                    // display the histogram image
                    m_vm.histImage2 = BitmapFactory.New(m_histogramImageWidth, m_histogramImageHeight);
                    Int32Rect histRect = new Int32Rect(0, 0, m_histogramImageWidth, m_histogramImageHeight);
                    m_vm.histImage2.Lock();
                    m_vm.histImage2.WritePixels(histRect, histImage, m_histogramImageWidth * 4, 0);
                    m_vm.histImage2.Unlock();
                    HistImage.Source = m_vm.histImage2;
                }
            }
        }
示例#2
0
        public void ImageFromFileToDatabase()
        {
            // Configure open file dialog box
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.FileName   = "";                             // Default file name
            dlg.DefaultExt = ".wgi";                         // Default file extension
            dlg.Filter     = "WaveGuide Image (.wgi)|*.wgi"; // Filter files by extension

            // Show open file dialog box
            Nullable <bool> result = dlg.ShowDialog();

            // Process open file dialog box results
            if (result == true)
            {
                // Open document
                string filename = dlg.FileName;

                if (File.Exists(filename))
                {
                    byte[] image;
                    ReadImageFromWgiFile(out image, filename);

                    int numbytes = image.Length;

                    ReferenceImageContainer cont = new ReferenceImageContainer();
                    cont.Width  = 1024;
                    cont.Height = 1024;
                    cont.Depth  = 2;
                    Buffer.BlockCopy(image, 0, cont.ImageData, 0, numbytes);
                    //cont.ImageData = image;
                    cont.TimeStamp = DateTime.Now;
                    cont.NumBytes  = numbytes;

                    bool success = wgDB.InsertReferenceImage(ref cont);

                    if (success)
                    {
                        success = true;
                    }
                }
            }
        }
示例#3
0
        private void ImageDisplay2_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            Point p = e.GetPosition(ImageDisplay2);

            int x = (int)(p.X / ImageDisplay2.ActualWidth * 1024.0);
            int y = (int)(p.Y / ImageDisplay2.ActualHeight * 1024.0);

            UInt16 val = 0;

            if (RefImageListBox.SelectedItem != null)
            {
                ReferenceImageContainer ric = (ReferenceImageContainer)RefImageListBox.SelectedItem;
                int index = (y * 1024) + x;
                val = ric.ImageData[index];
            }

            XPos.Text       = x.ToString();
            YPos.Text       = y.ToString();
            PixelValue.Text = val.ToString();
        }
示例#4
0
        private void SavePB_Click(object sender, RoutedEventArgs e)
        {
            if (VM.SaveAsFile)
            {
                if (VM.Filename.Length == 0)
                {
                    System.Windows.MessageBox.Show("Filename cannot be empty.",
                                                   "Enter a Filename", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                string path = VM.Location + "\\" + VM.Filename + ".png";

                if (File.Exists(path))
                {
                    MessageBoxResult result =
                        System.Windows.MessageBox.Show("File already exists.  Do you want to OverWrite it?",
                                                       "File Already Exists",
                                                       MessageBoxButton.YesNo, MessageBoxImage.Question);

                    if (result == MessageBoxResult.No)
                    {
                        return;
                    }
                }

                using (FileStream stream = new FileStream(path, FileMode.Create))
                {
                    PngBitmapEncoder encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(m_bitmap.Clone()));
                    encoder.Save(stream);
                    stream.Close();
                }
            }
            else
            {
                if (VM.Description.Length == 0)
                {
                    System.Windows.MessageBox.Show("Description cannot be empty for the  Reference Image.",
                                                   "Enter a Description", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                // save as reference image in database
                WaveguideDB wgDB = new WaveguideDB();

                ReferenceImageContainer refCont = new ReferenceImageContainer();

                refCont.CompressionAlgorithm = GlobalVars.CompressionAlgorithm;
                refCont.Depth         = 2;
                refCont.Height        = m_height;
                refCont.Width         = m_width;
                refCont.ImageData     = m_imageData;
                refCont.MaxPixelValue = GlobalVars.MaxPixelValue;
                refCont.NumBytes      = m_imageData.Length * 2;
                refCont.TimeStamp     = DateTime.Now;
                refCont.Description   = VM.Description;
                refCont.Type          = VM.Type;

                bool alreadyExists;

                bool success = wgDB.ReferenceImageTypeAlreadyExists(VM.Type, out alreadyExists);
                if (success)
                {
                    if (!alreadyExists)
                    {
                        success = wgDB.InsertReferenceImage(ref refCont);

                        if (!success)
                        {
                            System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(),
                                                           "Database Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }
                    }
                    else
                    {
                        string sMessageBoxText = "This reference already exists for: " + VM.Type.ToString() +
                                                 ".  Do you want to replace it?";
                        string sCaption = "Reference Image Already Exists For This Type";

                        MessageBoxButton btnMessageBox = MessageBoxButton.YesNo;
                        MessageBoxImage  icnMessageBox = MessageBoxImage.Warning;

                        MessageBoxResult rsltMessageBox = System.Windows.MessageBox.Show(sMessageBoxText, sCaption, btnMessageBox, icnMessageBox);

                        switch (rsltMessageBox)
                        {
                        case MessageBoxResult.Yes:
                            // delete the existing reference image
                            success = wgDB.ClearReferenceImageType(VM.Type);
                            if (success)
                            {
                                // insert the new reference image
                                success = wgDB.InsertReferenceImage(ref refCont);

                                if (!success)
                                {
                                    System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(),
                                                                   "Database Error", MessageBoxButton.OK, MessageBoxImage.Error);
                                }
                            }
                            else
                            {
                                System.Windows.MessageBox.Show("Failed to clear Reference Image: " + wgDB.GetLastErrorMsg(),
                                                               "Database Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            }

                            break;

                        case MessageBoxResult.No:
                            // do nothing
                            return;
                        }
                    }
                }
            }

            Close();
        }
示例#5
0
        private void SavePB_Click(object sender, RoutedEventArgs e)
        {
            if (VM.SaveAsFile)
            {
                if (VM.Filename.Length == 0)
                {
                    System.Windows.MessageBox.Show("Filename cannot be empty.",
                                                   "Enter a Filename", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                string path = VM.Location + "\\" + VM.Filename + ".png";

                if (File.Exists(path))
                {
                    MessageBoxResult result =
                        System.Windows.MessageBox.Show("File already exists.  Do you want to OverWrite it?",
                                                       "File Already Exists",
                                                       MessageBoxButton.YesNo, MessageBoxImage.Question);

                    if (result == MessageBoxResult.No)
                    {
                        return;
                    }
                }

                using (FileStream stream = new FileStream(path, FileMode.Create))
                {
                    PngBitmapEncoder encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(m_bitmap.Clone()));
                    encoder.Save(stream);
                    stream.Close();
                }
            }
            else
            {
                if (VM.Description.Length == 0)
                {
                    System.Windows.MessageBox.Show("Description cannot be empty for the  Reference Image.",
                                                   "Enter a Description", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                // save as reference image in database
                WaveguideDB wgDB = new WaveguideDB();

                ReferenceImageContainer refCont = new ReferenceImageContainer();

                refCont.CompressionAlgorithm = GlobalVars.CompressionAlgorithm;
                refCont.Depth         = 2;
                refCont.Height        = m_height;
                refCont.Width         = m_width;
                refCont.ImageData     = m_imageData;
                refCont.MaxPixelValue = GlobalVars.MaxPixelValue;
                refCont.NumBytes      = m_imageData.Length * 2;
                refCont.TimeStamp     = DateTime.Now;
                refCont.Description   = VM.Description;

                bool success = wgDB.InsertReferenceImage(ref refCont);

                if (!success)
                {
                    System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(),
                                                   "Database Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

            Close();
        }