Exemplo n.º 1
0
        void ReadImages(FloatPoint sizeRequest)
        {
            Global.cstat(ConsoleColor.Green, "Loading Thumbnails {0}", sizeRequest);

            foreach (FileInfo fi in Files)
            {
                if (Thumbnails.ContainsKey(fi))
                {
                    Thumbnails[fi].Dispose();
                }
                if (Thumbnails.ContainsKey(fi))
                {
                    Thumbnails[fi] = null;
                }
            }

            Thumbnails.Clear();

            int incr = 0;

            foreach (FileInfo fi in Files)
            {
                                #if (CONSOLE)
                Global.stat("loading {0}", fi.Name);
                                #endif
                System.Diagnostics.Debug.Print("loading {0}", fi.Name);

                using (Bitmap targetBitmap = new Bitmap(fi.FullName))
                {
//					try { targetBitmap = new Bitmap(fi.FullName); }
//					catch { targetBitmap = new Bitmap(famfam_silky.error); }

                    // is this necessary?
                    //Application.DoEvents();

                    Point targetSize = FloatPoint.Fit(
                        sizeRequest,
                        targetBitmap.Size,
                        2
                        );

                    if (targetSize.X <= 0)
                    {
                        targetSize = sizeRequest;
                    }
                    if (targetSize.Y <= 0)
                    {
                        targetSize = sizeRequest;
                    }

                    Bitmap renderBitmap = new Bitmap(targetSize.X, targetSize.Y);

                    using (Graphics g = Graphics.FromImage(renderBitmap))
                    {
                        g.HighQuality(InterpolMax, targetBitmap);
                        g.Clear(Color.Black);
                        g.DrawImage(targetBitmap, 0, 0, targetSize.X, targetSize.Y);

                        lock (threadLock)
                        {
                            try
                            {
                                Thumbnails.Add(fi, renderBitmap);
                            }
                            catch (Exception exception)
                            {
                                System.Diagnostics.Debug.Print("{0}", exception);
                            }
                        }
                    }
                }

                OnThumbsUpdated(incr++);
            }
        }