示例#1
0
 public static void DrawImage(this Graphics g, CompressedImage img, RectangleF rect)
 {
     using (var i = img.GetImage())
     {
         g.DrawImage(i, rect);
     }
 }
示例#2
0
        private void MakeThumbnail(Database db)
        {
            try
            {
                lock (this)
                {
                    if (_thumbnail != null || _image == null)
                    {
                        return;
                    }
                    var imageRect = new RectangleF(new PointF(0.0f, 0.0f), _image.Size);
                    if (imageRect.Width > HistoryList.ThumbnailWidth)
                    {
                        imageRect = imageRect.ScaleRectWidth(HistoryList.ThumbnailWidth);
                    }
                    if (imageRect.Height > HistoryList.ThumbnailHeight)
                    {
                        imageRect = imageRect.ScaleRectHeight(HistoryList.ThumbnailHeight);
                    }

                    _thumbnail = new CompressedImage(new Bitmap(_image, (int)imageRect.Width, (int)imageRect.Height));
                    ThumbnailUpdated?.Invoke(this, EventArgs.Empty);
                }

                using (var cmd = db.CreateCommand("update img set thumb = @thumb where path = @path"))
                {
                    cmd.Parameters.AddWithValue("@thumb", _thumbnail.Data);
                    cmd.Parameters.AddWithValue("@path", _location);
                    cmd.ExecuteNonQuery();
                }

                using (var cmd = db.CreateCommand("update history set thumb = @thumb where path = @path"))
                {
                    cmd.Parameters.AddWithValue("@thumb", _thumbnail.Data);
                    cmd.Parameters.AddWithValue("@path", _location);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex, "Error when creating image thumbnail.");
                _thumbnail = null;
            }
        }