gpt4 book ai didi

c# - 将 AxShockwaveFlash Flash 对象写入文件 C#

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:57 32 4
gpt4 key购买 nike

我想知道是否有任何方法可以读写(或保存/加载)AxShockwaveFlash Flash 对象到(二进制/文本)文件?

我有一个带有 AxShockwaveFlash Flash 对象 的 Winform,我想将它保存到一个
文件,但序列化不起作用,因为 AxShockwaveFlash 类型未标记为序列化?
(基本上尝试将 .swf 动态写入文件。)

有什么想法吗?

感谢和问候
阿密特

最佳答案

我试过了,它对我有用。

我从 AxShockwaveFlashObjects.AxShockwaveFlash 派生了一个类并实现了 ISerializable 接口(interface)。

实现了 GetObjectData 和序列化构造函数。其中没有太多编码。

[Serializable()]
class MyCustomFlash : AxShockwaveFlashObjects.AxShockwaveFlash, ISerializable
{
public MyCustomFlash()
{

}

public MyCustomFlash(SerializationInfo info, StreamingContext ctxt)
{
//dont think this is required.
this.OcxState = (State)info.GetValue("ocxstate", typeof(State));

}

#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
//dont think this is required.
// info.AddValue("movie", this.Movie);
info.AddValue("ocxstate", this.OcxState);
}
#endregion
}

我用的是winform。所以确保你使用

嵌入电影
    axShockwaveFlash1.EmbedMovie = true;
//loadMovie follows

然后尝试 Normal binary serialization/deserilzation .

在反序列化过程中,我尝试将序列化的flash添加到另一个表单中。
但是不断收到 AxHost+InvalidActiveXStateException 并且控件没有出现在 form 上。我认为该控件未在表单上启动。
只需将设计器初始化代码复制到它。然后它就可以工作了。

           string serialFilePath = @"E:\test\serialFiles\DataFile.dat";               
FileStream myFS = new FileStream(serialFilePath, FileMode.Open);
// Create a binary formatter object to deserialize the data
BinaryFormatter myBF = new BinaryFormatter();

MyCustomFlash flashObj;
//where class MyCustomFlash : AxShockwaveFlashObjects.AxShockwaveFlash, ISerializable

flashObj = (MyCustomFlash)myBF.Deserialize(myFS);
//this is code from VS designer..need to initialise flash control
((System.ComponentModel.ISupportInitialize)(flashObj)).BeginInit();
myFS.Close();
flashObj.Enabled = true;
this.Controls.Add(flashObj);
((System.ComponentModel.ISupportInitialize)(flashObj)).EndInit();

flashObj.Name = "Axflash";
flashObj.Visible = true;
flashObj.Location = new System.Drawing.Point(12, 12);
flashObj.Size = new System.Drawing.Size(309, 207);

希望这有帮助:)

谢谢
阿米特

关于c# - 将 AxShockwaveFlash Flash 对象写入文件 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174854/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com