コード例 #1
0
 private void PaintDetailAreas(Graphics g)
 {
     if (Photo != null)
     {
         foreach (var detail in Photo.Project.DetailAreas)
         {
             var pen = new Pen(Color.Orange, 3);
             g.DrawRectangle(pen, ImageConverter.ScaleRectangle(detail.Crop, _scaleFactor));
         }
     }
 }
コード例 #2
0
ファイル: ImagePreview.cs プロジェクト: ospringauf/dpqBench
        private void saveToolStripMenuItem_Click(object sender, System.EventArgs e)
        {
            var fd = new SaveFileDialog()
            {
                DefaultExt = ".jpg", Filter = "JPEG images|*.jpg"
            };

            if (fd.ShowDialog(this) == DialogResult.OK)
            {
                ImageConverter.SaveJpeg(fd.FileName, image, 85);
            }
        }
コード例 #3
0
        private void StoreRect(Point p1, Point p2)
        {
            if (Image == null)
            {
                return;
            }
            var p0 = new Point(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y));
            var sz = new Size(Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y));

            Crop = new Rectangle(p0, sz);
            Crop = Rectangle.Intersect(Crop, new Rectangle(new Point(0, 0), Image.Size));

            // transform to image coordinates
            Crop = ImageConverter.ScaleRectangle(Crop, 1.0 / _scaleFactor);
            if (OnDetailSelected != null)
            {
                OnDetailSelected(this, new EventArgs());
            }

            // delete the reversible rectangle
            MyDrawReversibleRectangle(p1, p2);
        }
コード例 #4
0
        /// <summary>
        /// Renders last group level in horizontal direction, as a strip of detail tiles
        /// </summary>
        /// <param name="f">The f.</param>
        /// <param name="input">The input.</param>
        /// <returns></returns>
        private Image RenderRow(GroupFilter f, PhotoDetailCollection input)
        {
            var boxes = f.ParameterValues.SelectedValues.Count;

            // calc size of individual images, fit into configured bounding box
            var boxSize   = ScaleToBoundingBox ? ImageConverter.FitInto(TileSize, BoundingBox, true) : TileSize;
            var stripSize = new Size(boxes * (boxSize.Width + Padding), boxSize.Height);

            Bitmap b = new Bitmap(stripSize.Width, stripSize.Height);

            using (Graphics g = Graphics.FromImage(b))
            {
                g.FillRectangle(new SolidBrush(Color.White), new Rectangle(new Point(0, 0), stripSize));

                var destRect = new Rectangle(new Point(0, 0), boxSize);

                // fill the image tiles in X-direction
                foreach (var pv in f.ParameterValues.SelectedValues)
                {
                    // g.FillRectangle(new SolidBrush(Color.GreenYellow), destRect);

                    var tileLabel = string.Empty;
                    var tiles     = f.Filter(pv, input);
                    if (tiles.Count == 0)
                    {
                        // no matching tile image, leave empty
                    }
                    else if (tiles.Count > 1)
                    {
                        // more than one matching image, write warning
                        tileLabel = pv + ": " + tiles.Count + " matches";
                    }
                    else
                    {
                        // exactly one matching image
                        var photoDetail = tiles[0];
                        using (var tileImg = photoDetail.Image)
                        {
                            using (var scaledTileImg = ImageConverter.ResizeImage(tileImg, boxSize))
                            {
                                g.DrawImage(scaledTileImg, destRect.Location);
                            }
                        }

                        tileLabel = pv;
                    }

                    if (!string.IsNullOrEmpty(tileLabel))
                    {
                        RenderLabel(g, tileLabel, destRect, false);
                    }

                    // move target rect to the left
                    destRect.Offset(boxSize.Width + Padding, 0);
                    MainWindow.Instance.Progress++;
                }

                var strip = (Image)b;
                return(strip);
            }
        }