コード例 #1
0
ファイル: MenuForm.cs プロジェクト: Feliks92/ImageShow
 // PRZYCISK DELETE
 private void button_delete_Click(object sender, EventArgs e)
 {
     using (var context = new ImageDBEntities())
     {
         var delete = context.Database.ExecuteSqlCommand("DELETE FROM Imagetable");
         MessageBox.Show("DataBase cleared");
     }
 }
コード例 #2
0
ファイル: MenuForm.cs プロジェクト: Feliks92/ImageShow
        // PRZYCISK SHOW
        private void button_show_click(object sender, EventArgs e)
        {
            Helper helper = new Helper();

            using (var context = new ImageDBEntities())
            {
                var IDs = context.Database.SqlQuery <int>(" SELECT ID FROM Imagetable").ToList();
                helper.ShowImages(IDs, Helper.SlideTime, Helper.MaxImageWidth, Helper.MaxImageHeight);
            }
        }
コード例 #3
0
ファイル: BrowseForm.cs プロジェクト: Feliks92/ImageShow
        // PRZYCISK PODMIANA
        private void button_replace_Click(object sender, EventArgs e)
        {
            Dispose();

            using (var context = new ImageDBEntities())
            {
                int delete = context.Database.ExecuteSqlCommand("DELETE FROM imagetable");
            }

            helper.BrowseAndAdd();
        }
コード例 #4
0
ファイル: Helper.cs プロジェクト: Feliks92/ImageShow
        // METODA DO WYŚWIETLENIA POKAZU SLAJDÓW
        public void ShowImages(List <int> IDlist, int time = 2000, int width = 800, int height = 600)
        {
            BackgroundWorker worker = new BackgroundWorker();

            worker.WorkerSupportsCancellation = true;
            Form imageform = new Form();

            imageform.StartPosition    = FormStartPosition.CenterScreen;
            imageform.BackColor        = Color.Black;
            imageform.FormBorderStyle  = FormBorderStyle.None;
            imageform.Size             = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            imageform.KeyDown         += new KeyEventHandler(esc_pushed);
            imageform.KeyDown         += new KeyEventHandler(space_pushed);
            imageform.Shown           += new EventHandler(image_shown);
            worker.DoWork             += new DoWorkEventHandler(worker_show);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_completed);
            imageform.ShowDialog();

            bool nextimage = false;

            void image_shown(object sender, EventArgs e)
            {
                worker.RunWorkerAsync();
            }

            void worker_show(object sender, DoWorkEventArgs e)
            {
                nextimage = false;
                foreach (var ID in IDlist)
                {
                    if (worker.CancellationPending == true)
                    {
                        break;
                    }

                    using (var context = new ImageDBEntities())
                    {
                        var DBimage = context.Database.SqlQuery <byte[]>($"SELECT image FROM imagetable WHERE id={ID}").FirstOrDefault();

                        Image imagefromdb = Image.FromStream(new MemoryStream(DBimage));

                        PictureBox pb = new PictureBox();
                        pb.SizeMode    = PictureBoxSizeMode.Zoom;
                        pb.MaximumSize = new Size(width, height);
                        pb.Size        = imagefromdb.Size;
                        pb.Image       = imagefromdb;

                        DateTime dthen = DateTime.Now;

                        imageform.Invoke((MethodInvoker) delegate
                        {
                            pb.Location = new Point((Screen.PrimaryScreen.Bounds.Width / 2) - (pb.ClientSize.Width / 2),
                                                    (Screen.PrimaryScreen.Bounds.Height / 2) - (pb.ClientSize.Height / 2));

                            imageform.Controls.Add(pb);

                            while (dthen.AddMilliseconds(time) > DateTime.Now)
                            {
                                if (worker.CancellationPending || nextimage == true)
                                {
                                    break;
                                }
                                else
                                {
                                    Application.DoEvents();
                                }
                            }

                            nextimage = false;
                            pb.Dispose();
                        });
                    }
                }
            }

            void esc_pushed(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Escape)
                {
                    worker.CancelAsync();
                }
            }

            void space_pushed(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Space)
                {
                    nextimage = true;
                }
            }

            void worker_completed(object sender, RunWorkerCompletedEventArgs e)
            {
                imageform.Dispose();
            }
        }
コード例 #5
0
ファイル: Helper.cs プロジェクト: Feliks92/ImageShow
        // METODA PRZESZUKANIE I DODANIE DO BAZY DANYCH
        public void BrowseAndAdd()
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                var imagelist = Directory.EnumerateFiles(fbd.SelectedPath, "*.jpg");

                ProgressBarForm bar = new ProgressBarForm(imagelist.Count());
                bar.Show();
                int i      = 0;
                var worker = new BackgroundWorker();
                worker.DoWork                    += new DoWorkEventHandler(worker_addimages);
                worker.RunWorkerCompleted        += new RunWorkerCompletedEventHandler(worker_completed);
                bar.FormClosing                  += new FormClosingEventHandler(progressbar_closing);
                worker.WorkerSupportsCancellation = true;
                worker.RunWorkerAsync();

                void progressbar_closing(object sender, FormClosingEventArgs e)
                {
                    e.Cancel = true;
                    worker.CancelAsync();
                }

                void worker_addimages(object sender, DoWorkEventArgs e)
                {
                    using (var context = new ImageDBEntities())
                    {
                        foreach (var imagename in imagelist)
                        {
                            if (worker.CancellationPending == true)
                            {
                                break;
                            }

                            Imagetable table = new Imagetable();
                            var        image = Image.FromFile(imagename);

                            if ((image.Size.Width > MaxImageWidth) && (image.Size.Height > MaxImageHeight))
                            {
                                image = new Bitmap(image, MaxImageWidth, MaxImageHeight);
                            }

                            table.ID    = i;
                            table.Name  = "obrazek";
                            table.Image = ImageToByte(image);
                            context.Imagetables.Add(table);
                            context.SaveChanges();

                            bar.Invoke((MethodInvoker) delegate
                            {
                                bar.increment();
                                bar.progress(imagelist.Count(), ++i);
                            });
                        }
                    }
                }

                void worker_completed(object sender, RunWorkerCompletedEventArgs e)
                {
                    bar.Dispose();
                    if (i == imagelist.Count())
                    {
                        MessageBox.Show("All images loaded");
                    }
                    else
                    {
                        MessageBox.Show(i + "/" + imagelist.Count() + " images loaded");
                    }
                }
            }

            else
            {
                MessageBox.Show("Canceled");
            }
        }