예제 #1
0
        private void RotateObject(Document.Location location, float angle)
        {
            g.SmoothingMode = SmoothingMode.AntiAlias;
            Point center = new Point((location.left + location.width / 2), (location.top + location.height / 2));

            g.Transform = RotateAroundPoint(angle, center);
        }
예제 #2
0
        private void DrawScaledImage(Document.DocumentLayout.Layout layout)
        {
            Document.HorizontalAlignment alignmentX =
                (Document.HorizontalAlignment)Enum.Parse(typeof(Document.HorizontalAlignment), layout.alignmentX, true);
            Document.VerticalAlignment alignmentY =
                (Document.VerticalAlignment)Enum.Parse(typeof(Document.VerticalAlignment), layout.alignmentY, true);
            Image image = Image.FromFile(layout.value);

            Document.Location scaledLocation = new Document.Location();
            scaledLocation.left = layout.location.left;
            scaledLocation.top  = layout.location.top;
            if (layout.location.width > layout.location.height)
            {
                scaledLocation.width  = (int)(image.Width * ((double)layout.location.height / image.Height));
                scaledLocation.height = layout.location.height;
            }
            else
            {
                scaledLocation.height = (int)(image.Height * ((double)layout.location.width / image.Width));
                scaledLocation.width  = layout.location.width;
            }
            if ((alignmentX == Document.HorizontalAlignment.middle) && (scaledLocation.width < layout.location.width))
            {
                scaledLocation.left += (layout.location.width - scaledLocation.width) / 2;
            }
            else if ((alignmentX == Document.HorizontalAlignment.right) && (scaledLocation.width < layout.location.width))
            {
                scaledLocation.left += (layout.location.width - scaledLocation.width);
            }
            if ((alignmentY == Document.VerticalAlignment.middle) && (scaledLocation.height < layout.location.height))
            {
                scaledLocation.top += (layout.location.height - scaledLocation.height) / 2;
            }
            else if ((alignmentY == Document.VerticalAlignment.bottom) && (scaledLocation.height < layout.location.height))
            {
                scaledLocation.top += (layout.location.height - scaledLocation.height);
            }
            RotateObject(scaledLocation, layout.rotation);
            g.DrawImage(image, scaledLocation.left, scaledLocation.top, scaledLocation.width, scaledLocation.height);
        }