返回首页

{A}
{S0}本文的目标
本文的主要目标是显示如何转换成SWF动画JPEG文件上飞用几行代码,。使用SwfDotNet库
SwfDotNet库是一个C#开源框架,可以在:
这个库提供阅读有关的一些好东西,可以写在任何版本的SWF格式的文件,从1到7。 SwfDotNet.IO.dll兼容。NET框架1.1,2.0,或和Mono。这个库方面MacromediaTM SWF格式规范。你可以阅读和下载的Macromedia官方规范{A4}。理论
首先,我建议您阅读我在CodeProject上SwfDotNet的另一篇文章,"{A5}"。在这篇文章中,你可以找到有关如何使用这个库的通用信息,这是一个很好的理解本文的介绍。该SWF标记序列
一个SWF文件是一个特定的标记,这是用来例如,嵌入的数据,来描述如何显示库元素,添加一个帧,放置一个对象的序列,删除一个对象,等等。
每个标记描述了一个在屏幕上的字符,字符识别码,这是一个唯一的数字组成。在此示例中使用的标签下面是这个例子中所必需的标签列表:SetBackgroundColorTag:定义背景颜色。 DefineBitsJpeg2Tag:JPEG数据嵌入到SWF。DefineShapeTag:创建一个在屏幕上的形状描述的方式来显示的DefineBitsJpeg2Tag数据。感谢它,我们可以,例如,应用转换,等等。 PlaceObject2Tag:DefineShapeTag对象在屏幕上放置的位置,大小等,ShowFrameTag:最后一帧添加。创建示例应用程序
首先,在你的类SwfDotNet的库:

using SwfDotNet.IO;

using SwfDotNet.IO.Tags;

using SwfDotNet.IO.Tags.Types;


,我们将使用System.Drawing.Image类加载JPEG文件,然后我们就可以转换BMP,GIF,PNG等相同的代码太:{C}
现在,我们创建一个SWF对象,并填写标头信息。不要忘了,SWF格式使用英寸为单位,而不是像素! (1像素= 20英寸)来减少带宽,我们选择压缩我们的最终动画。要做到这一点,添加了以下具体的"水煤浆"签名:
//Create a new Swf instance

Swf swf = new Swf();

//Set size in inch unit (1 pixel = 20 inches)

swf.Size = new Rect(0, 0, (posX + imgWidth) * 20, (posY + imgHeight) * 20);

swf.Version = 7;  //Version 7 (for compression, must be > 5)

swf.Header.Signature = "CWS";  //Set the signature to compress the swf



//Set the background color tag as white

swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255));


现在,我们可以在我们的动画导入的JPEG数据。 SwfDotNet库,FromImage DefineBitsJpeg2Tag对象的静态方法,它真的很简单。
你可以看到,一个DefineBitsJpeg2标签是一个"字符标签"。然后,我们必须设置一个唯一的ID,这个对象。要做到这一点,你可以使用SWF对象GetNewDefineId的方法。
//Set the jpeg tag

ushort jpegId = swf.GetNewDefineId();

//Load the jped directly from an image

//In fact, this line will load the jpeg data in the file as 

//a library element only (not to display the jpeg)

swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img));


现在到了最困难的部分在本示例:我们要创建defineShape描述的方式来显示JPEG数据。
首先,我们必须创建一个新的唯一的ID,这个标签。然后,我们指定我们的形状填充样式,并使用FillStyleType.ClippedBitmapFill填写JPEG数据的形状。现在,我们必须定义绘制过程中的ShapeRecordCollection对象。 StyleChangeRecord类指定,我们将设置笔的位置上左点位图。 StraightEdgeRecord对象指定位图RECT合作ords,最后,EndShapeRecord关闭拉丝工艺。
最后,我们添加了一个PlaceObject2Tag对象放置在屏幕上的形状。
最后,我们将添加一个帧,以显示,和我们的SWF对象保存到一个文件中,感谢SwfWriter类。你婉通知SwfWriter可以写在一个文件或流(Web应用程序,例如)。
//Add a single frame

swf.Tags.Add(new ShowFrameTag());

swf.Tags.Add(new EndTag());



//Write the swf to a file

SwfWriter writer = new SwfWriter(outputSwfFileName);

writer.Write(swf);

writer.Close();



img.Dispose();
结论
正如你可以看到,由于SwfDotNet库,你可以很容易地创建一个JPEG的SWF程序。这个代码,很容易创建一个WebForm的组件,它创建总是在飞行从JPEG文件的Flash幻灯片。
我们已经看到了如何在SWF文件中绘制一个简单的形状,但它确实只是一个引子。我们将进一步发展这个主题,在以后的文章。历史19/12/2006:第一条版本。特别感谢萨科Guary和皮埃尔Cleaud帮助我翻译。

回答

评论会员:dxmedia 时间:2011/12/07
嗨,我怎么能添加一个透明的PNG?我知道它与DefineBitsJpeg3Tag事做,但我无法得到它的工作
评论会员:。yogarajan 时间:2011/12/07
喜的朋友

我如何添加多个图像,文字和音频

请帮助我

由于事先

yogarajan.G
评论会员:游客 时间:2011/12/07
swordfish2310:你有任何的例子转换doc或docx文档,没有安装MicrosoftOffice为SWF
。会员4402321
评论会员:游客 时间:2011/12/07
我要输出的SWF文件,可在网站上播放,但我需要它有一个trackbar和音量控制暂停和播放
小吃Ranjan辛格
评论会员:游客 时间:2011/12/07
您好,我需要帮助DOC/PDF文件转换为SWFUR。小吃Ranjan辛格tapassingh@gmail.com
abbabbabba:
|嗨,

首先,本文swfDotNet库是伟大的

我试图仅仅改变
swfObj.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img))

swfObj.Tags.Add(DefineBitsLossLess2Tag.FromImage(jpegId, img))
并希望这将严重压缩的位图在SWF变得完美。不幸的是,没有任何的SWF创建时,试图...
怎样才能控制或关闭图像压缩的SWF?

所有最优秀的,
/ Guran
|特里斯科菲尔德
评论会员:游客 时间:2011/12/07
?有没有人想出了如何创建一个幻灯片,或至少使一个SWF文件,在每一帧多帧显示不同的图像此外,任何人都想出了如何添加ActionScript代码的Flash文件使用swfdotnet.IO库
?突发奇想
评论会员:游客 时间:2011/12/07
如何创建与SwfDotnNet字形的字体?我知道:DefineFont标签定义每个字形轮廓的形状。但需要的例子。
garyemiller
评论会员:游客 时间:2011/12/07
我看不出多大用处,在建设一个静态图像"动画"。你为什么不显示如何添加序列中播放的多个图像。
sabrown100
评论会员:游客 时间:2011/12/07
感谢,这是一个耻辱,我无法找到这个API的更多文章。
ghassen2
评论会员:游客 时间:2011/12/07
如何制作幻灯片您好;这真的是很不错的职位,THX我可以从多个图像(例如每个图像仍然显示2秒),幻灯片放映;THXGhassen
binbin306
评论会员:游客 时间:2011/12/07
,这是一个对韩国人的代码但我有一个问题。代码只是变换一个swfJPG能否trasforms多jpg文件的SWF?谢谢!
会员3828173
评论会员:游客 时间:2011/12/07
我不能让多个JPEG文件工作。也许在他的代码中的错误
拉杰什中号Panchal
评论会员:游客 时间:2011/12/07
雅它可能存在..甚至我还没有找到。:(
会员3828173
评论会员:游客 时间:2011/12/07
确定我得到它的工作,我现在可以显示多个JPG在一个SWF文件的解决方案实际上是很容易-这不是作者的代码中的错误...{。。BR}可以得出什么新的东西之前,必须删除以前的形状。做到这一点://将图片画面与深入=1swf.Tags.Add(新PlaceObject2Tag(shapeTag.CharacterId,1,0,0))swf.Tags.Add(新ShowFrameTag());{BR}swf.Tags.Add(新RemoveObject2Tag(1));//添加的行!!//{BR}然后你就可以反复添加后续帧
。yogarajan
评论会员:游客 时间:2011/12/07
喜你有任何样本多JPEG和文字输入和音频输入我如何添加新的框架的新形象请帮助就显得非常迫切感谢Yogarajan修改2011年6月17日,上周五,1:43AM
armen_stepanyan
评论会员:游客 时间:2011/12/07
我需要一些documentationsSwfDotNet库,源凡用于SwfDotNet库,我需要获得高品质的*.swf文件{BR的一些代码。}感谢......反洗钱司
armen_stepanyan
评论会员:游客 时间:2011/12/07
我需要SwfDotNet库,源凡用于SwfDotNet库,我需要获得高品质的*.swf文件一些代码documentations感谢......反洗钱司
文斯周
评论会员:游客 时间:2011/12/07
JPEG是所有有关图形。我可以使用你的框架,以编程方式更改音频文件(WAV格式)的SWF?我们的音频信号源都是以WAV格式,我们需要改变他们的SWF在飞的格式,并发挥他们在不同的Web浏览器。它出现的Flash(SWF)格式是最好的。在此先感谢,文斯
文斯周
评论会员:游客 时间:2011/12/07
JPEG是所有有关图形。我可以使用你的框架,以编程方式更改音频文件(WAV格式)的SWF?我们的音频信号源都是以WAV格式,我们需要改变他们的SWF在飞的格式,并发挥他们在不同的Web浏览器。它出现的Flash(SWF)格式是最好的。
Wayde
评论会员:游客 时间:2011/12/07
反正有VisualStudio2003年获得这个项目的工作?我试图创建自己的项目,你的榜样。当我尝试添加一个引用到SWFDotNet.IO.DLL说,这是不是有效的组件。感谢
奥利维尔卡彭铁尔
评论会员:游客 时间:2011/12/07
你必须编译swfdotnet框架与VisualStudio2003年第一。你可以发现easly在CodeProject上做它的工具。最好的问候。
gr8aqeel
评论会员:游客 时间:2011/12/07
!好文章花花公子嘿,我想知道你在哪里提供了形象的名字,这是作为output.swfimgsrc=http://www.orcode.com/upimg/2011_12_07_07_18_50_1.gif转化
奥利维尔卡彭铁尔
评论会员:游客 时间:2011/12/07
JPEG的名字是在命令行中的第一个参数和输出SWF名称在第二个。在VisualStudio中的调试模式,可以改变如下:右键单击项目名称属性调试""命令行参数。
gr8aqeel:感谢亲爱的,有没有办法动态给文件名{S2}