问题描述
我试图将Java2D中的矢量图像drawin的输出保存到SWF文件中。有像SVG(BATIK)和PDF(itext)那样保存java2D输出的很好的库,但是我找不到一个用于SWF的库。任何想法?
我刚刚拿到了一个使用。 FYI ... Flex 3现在是开源的。
$ b
我通过查看这些两个类和。
运行这个例子的唯一两个jar是swfutils.jar和batik-awt -util.jar可以。
这是我的示例代码...
$ p $ //创建SpriteGraphics2D对象
SpriteGraphics2D g = new SpriteGraphics2D(100,100);
//绘制到图形对象
Font font = new Font(Serif,Font.PLAIN,16);
g.setFont(font);
g.drawString(Test swf,30,30);
g.draw(new Line2D.Double(5,5,50,60));
g.draw(new Line2D.Double(50,60,150,40));
g.draw(new Line2D.Double(150,40,160,10));
//创建一个新的空电影
Movie m = new Movie();
m.version = 7;
m.bgcolor = new SetBackgroundColor(SwfUtils.colorToInt(255,255,255));
m.framerate = 12;
m.frames = new ArrayList(1);
m.frames.add(new Frame());
m.size = new Rect(11000,8000);
//从图形对象获取DefineSprite
DefineSprite tag = g.defineSprite(swf-test);
//将DefineSprite放在第一帧
Frame frame1 =(Frame)m.frames.get(0);
矩阵mt =新矩阵(0,0);
frame1.controlTags.add(new PlaceObject(mt,tag,1,null));
TagEncoder tagEncoder = new TagEncoder();
MovieEncoder movieEncoder = new MovieEncoder(tagEncoder);
movieEncoder.export(m);
//写入文件
FileOutputStream fos = new FileOutputStream(new File(/ test.swf));
tagEncoder.writeTo(fos);
I'm trying to save the output of an vector image drawin in Java2D to an SWF file. There are great libraries for saving java2D output as things like SVG (BATIK) and PDF(itext) but I can't find one for SWF. Any ideas?
I just got an example to work using the SpriteGraphics2D object from Adobe's Flex 3. FYI... Flex 3 is now open source.
I figured this out by looking at these two classes CubicCurveTest.java and SpriteTranscoder.java.
The only two jars needed to run this example are swfutils.jar and batik-awt-util.jar which can be downloaded here.
Here is my example code...
// Create the SpriteGraphics2D object
SpriteGraphics2D g = new SpriteGraphics2D(100, 100);
// Draw on to the graphics object
Font font = new Font("Serif", Font.PLAIN, 16);
g.setFont(font);
g.drawString("Test swf", 30, 30);
g.draw(new Line2D.Double(5, 5, 50, 60));
g.draw(new Line2D.Double(50, 60, 150, 40));
g.draw(new Line2D.Double(150, 40, 160, 10));
// Create a new empty movie
Movie m = new Movie();
m.version = 7;
m.bgcolor = new SetBackgroundColor(SwfUtils.colorToInt(255, 255, 255));
m.framerate = 12;
m.frames = new ArrayList(1);
m.frames.add(new Frame());
m.size = new Rect(11000, 8000);
// Get the DefineSprite from the graphics object
DefineSprite tag = g.defineSprite("swf-test");
// Place the DefineSprite on the first frame
Frame frame1 = (Frame) m.frames.get(0);
Matrix mt = new Matrix(0, 0);
frame1.controlTags.add(new PlaceObject(mt, tag, 1, null));
TagEncoder tagEncoder = new TagEncoder();
MovieEncoder movieEncoder = new MovieEncoder(tagEncoder);
movieEncoder.export(m);
//Write to file
FileOutputStream fos = new FileOutputStream(new File("/test.swf"));
tagEncoder.writeTo(fos);
这篇关于将Java2D保存到SWF(闪存)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!