public final class EmfRecorderGraphics2D extends MetafileRecorderGraphics2D
The Emf recorder graphics
MetafileRecorderGraphics2D
This example shows how to create a EMF image and draw some geometric shapes on it using EmfRecorderGraphics2D.
String dir = "c:\\temp\\"; // The image size in pixels int deviceWidth = 600; int deviceHeight = 400; // The image size in millimeters int deviceWidthMm = (int) (deviceWidth / 100f); int deviceHeightMm = (int) (deviceHeight / 100f); com.aspose.imaging.Rectangle frame = new com.aspose.imaging.Rectangle(0, 0, deviceWidth, deviceHeight); // Create a EMF image. com.aspose.imaging.fileformats.emf.graphics.EmfRecorderGraphics2D graphics = new com.aspose.imaging.fileformats.emf.graphics.EmfRecorderGraphics2D( frame, new com.aspose.imaging.Size(deviceWidth, deviceHeight), new com.aspose.imaging.Size(deviceWidthMm, deviceHeightMm)); // Draw a black rectangle along the image borders using a 1-pixel-wide black pen. graphics.drawRectangle(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getBlack(), 1), 0, 0, deviceWidth, deviceHeight); // Fill a rectangle with the color of white-smoke. graphics.fillRectangle( new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getWhiteSmoke()), new com.aspose.imaging.Rectangle(10, 10, 580, 380)); // Draw two diagonal lines using a 1-pixel-wide darkgreen pen. graphics.drawLine(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getDarkGreen(), 1), 0, 0, deviceWidth, deviceHeight); graphics.drawLine(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getDarkGreen(), 1), 0, deviceHeight, deviceWidth, 0); // Draw an arc within the rectangle {0, 0, 200, 200} using a 2-pixel-wide blue pen. graphics.drawArc(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getBlue(), 2), new com.aspose.imaging.Rectangle(0, 0, 200, 200), 90, 270); // Fill an arc graphics.fillPie( new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getLightSkyBlue()), new com.aspose.imaging.Rectangle(0, 0, 150, 150), 90, 270); // Draw a cubic bezier using a 2-pixel-wide red pen. graphics.drawCubicBezier(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getRed(), 2), new com.aspose.imaging.Point(0, 0), new com.aspose.imaging.Point(200, 133), new com.aspose.imaging.Point(400, 166), new com.aspose.imaging.Point(600, 400)); // Draw a raster image of the specified size at the specified location. // The image is scaled to fit the desired rectangle. com.aspose.imaging.RasterImage imageToDraw = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "sample.bmp"); try { graphics.drawImage(imageToDraw, new com.aspose.imaging.Rectangle(400, 200, 100, 50), new com.aspose.imaging.Rectangle(0, 0, deviceWidth, deviceHeight), com.aspose.imaging.GraphicsUnit.Pixel); } finally { imageToDraw.dispose(); } // Draw a text string graphics.drawString("Hello World!", new com.aspose.imaging.Font("Arial", 48, com.aspose.imaging.FontStyle.Regular), com.aspose.imaging.Color.getDarkRed(), 200, 300); // Create a path to fill com.aspose.imaging.Figure figureToFill = new com.aspose.imaging.Figure(); figureToFill.setClosed(true); com.aspose.imaging.GraphicsPath pathToFill = new com.aspose.imaging.GraphicsPath(); pathToFill.addFigure(figureToFill); figureToFill.addShapes(new com.aspose.imaging.Shape[] { new com.aspose.imaging.shapes.ArcShape(new com.aspose.imaging.RectangleF(400, 0, 200, 100), 45, 300), new com.aspose.imaging.shapes.BezierShape( new com.aspose.imaging.PointF[] { new com.aspose.imaging.PointF(300, 200), new com.aspose.imaging.PointF(400, 200), new com.aspose.imaging.PointF(500, 100), new com.aspose.imaging.PointF(600, 200), }), new com.aspose.imaging.shapes.PolygonShape( new com.aspose.imaging.PointF[] { new com.aspose.imaging.PointF(300, 100), }), new com.aspose.imaging.shapes.RectangleShape(new com.aspose.imaging.RectangleF(0, 100, 200, 200)), }); // Fill the path using a yellow brush and a green pen to draw outline graphics.fillPath( new com.aspose.imaging.Pen(com.aspose.imaging.Color.getGreen(), 2), new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getYellow()), pathToFill); // Create a path to draw com.aspose.imaging.GraphicsPath pathToDraw = new com.aspose.imaging.GraphicsPath(); com.aspose.imaging.Figure figureToDraw = new com.aspose.imaging.Figure(); pathToDraw.addFigure(figureToDraw); figureToDraw.addShapes(new com.aspose.imaging.Shape[] { new com.aspose.imaging.shapes.ArcShape(new com.aspose.imaging.RectangleF(200, 200, 200, 200), 0, 360), }); // Draw the path using a 5-pixel-wide orange pen. graphics.drawPath(new com.aspose.imaging.Pen(com.aspose.imaging.Color.getOrange(), 5), pathToDraw); // In order to rasterize SVG we need to specify rasterization options. com.aspose.imaging.imageoptions.SvgRasterizationOptions rasterizationOptions = new com.aspose.imaging.imageoptions.SvgRasterizationOptions(); com.aspose.imaging.imageoptions.PngOptions saveOptions = new com.aspose.imaging.imageoptions.PngOptions(); saveOptions.setVectorRasterizationOptions(rasterizationOptions); // Get the final WMF image which includes all drawing commands com.aspose.imaging.fileformats.emf.EmfImage emfImage = graphics.endRecording(); try { emfImage.save(dir + "test.output.emf"); } finally { emfImage.dispose(); }
Constructor and Description |
---|
EmfRecorderGraphics2D(Rectangle frame,
Size deviceSize,
Size deviceSizeMm)
Initializes a new instance of the
EmfRecorderGraphics2D class. |
Modifier and Type | Method and Description |
---|---|
EmfImage |
endRecording()
Ends the recording.
|
static EmfRecorderGraphics2D |
fromEmfImage(EmfImage emfImage)
Gets an instance of the
EmfRecorderGraphics2D containing all records from the Emf image. |
int |
getBackgroundMode()
Gets or sets the background mode.
|
void |
setBackgroundMode(int value)
Gets or sets the background mode.
|
clear, drawArc, drawCubicBezier, drawEllipse, drawImage, drawImage, drawImage, drawLine, drawLine, drawPath, drawPie, drawPolyCubicBezier, drawPolygon, drawPolyline, drawRectangle, drawRectangle, drawString, drawString, excludeClip, excludeClip, fillEllipse, fillPath, fillPie, fillPolygon, fillPolygon, fillRectangle, getBackgroundColor, getClip, getClipBounds, getTransform, intersectClip, intersectClip, multiplyTransform, multiplyTransform, resetClip, rotateTransform, rotateTransform, scaleTransform, scaleTransform, setBackgroundColor, setClip, setTransform, translateTransform, translateTransform
public int getBackgroundMode()
Gets or sets the background mode.
public void setBackgroundMode(int value)
Gets or sets the background mode.
value
- The background mode.public final EmfImage endRecording()
Ends the recording.
public static EmfRecorderGraphics2D fromEmfImage(EmfImage emfImage)
Gets an instance of the EmfRecorderGraphics2D
containing all records from the Emf image.
emfImage
- The Emf image to read records from.EmfRecorderGraphics2D
This example shows how to load a EMF image from a file and draw a text string over it.
String dir = "c:\\temp\\"; com.aspose.imaging.fileformats.emf.EmfImage emfImage = (com.aspose.imaging.fileformats.emf.EmfImage) com.aspose.imaging.Image.load(dir + "test.emf"); try { com.aspose.imaging.fileformats.emf.graphics.EmfRecorderGraphics2D graphics = com.aspose.imaging.fileformats.emf.graphics.EmfRecorderGraphics2D.fromEmfImage(emfImage); // First, get the image size int width = emfImage.getWidth(); int height = emfImage.getHeight(); // Second, calculate a transformation to put a text string along the main diagonal of the image - // from the upper-left to the bootom-right corner. float emFontSize = 96f; float d = (float) java.lang.Math.sqrt(width * width + height * height); float scaleFactor = d / (emFontSize * 5f); float tan = ((float) height) / width; double radians = java.lang.Math.atan(tan); double degrees = (180 * radians) / java.lang.Math.PI; com.aspose.imaging.Matrix transform = new com.aspose.imaging.Matrix(); transform.rotate((float) degrees); transform.scale(scaleFactor, scaleFactor); // Then, set the transform. graphics.setTransform(transform); // Finally, put a watermark (text string of pink color) along the main diagonal. graphics.drawString("WATERMARK", new com.aspose.imaging.Font( "Courier New", emFontSize), com.aspose.imaging.Color.getLightPink(), 0, 0/*, (float)degrees*/); // Save the image with watermark to another EMF file. com.aspose.imaging.fileformats.emf.EmfImage scaledEmfImage = graphics.endRecording(); try { scaledEmfImage.save(dir + "test.scaled.emf"); } finally { scaledEmfImage.dispose(); } } finally { emfImage.dispose(); }