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); }
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); }