Beispiel #1
0
        public void 显示列表(ListView 列表, bFile b文件)
        {
            列表.Items.Clear();

            if (b文件.Parent != null)
            {
                ListViewItem li = new ListViewItem(".");
                li.SubItems.Add("...");
                列表.Items.Add(li);
            }
            int i = 0;
            int n = 0;

            foreach (bImage b图像 in b文件.ImageList)
            {
                foreach (bImgData b数据 in b图像.DataList)
                {
                    ListViewItem li = new ListViewItem(n.ToString() + "-" + i.ToString());
                    li.SubItems.Add(b数据.GetName());
                    li.SubItems.Add(b数据.GetFileType());
                    li.SubItems.Add(b数据.DataLen.ToString());
                    列表.Items.Add(li);
                    i++;
                }
                n++;
            }
        }
Beispiel #2
0
        private void 保存_Click(object sender, EventArgs e)
        {
            int   i   = 1;
            bFile b文件 = 择b文件;

            while (择b文件.Parent != null)
            {
                byte[] buff = 获取b(择b文件);
                择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].Data    = new MemoryStream(buff);
                择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].DataLen = buff.Length;
                i++;
                择b文件 = 择b文件.Parent;
            }
            择b文件 = b文件;
            保存b(打开b文件);

            b文件组.Clear();
            X.Clear();
            Y.Clear();
            b文件组.Add(读取b(打开b文件));
            择b文件 = b文件组[0];
            显示列表(浏览器, 择b文件);

            MessageBox.Show("保存完成!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
Beispiel #3
0
        private void 浏览器_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo info = 浏览器.HitTest(e.X, e.Y);

            if (info.Item != null)
            {
                int x, y;
                if (info.Item.SubItems[0].Text == ".")
                {
                    byte[] buff = 获取b(择b文件);
                    择b文件.Parent.ImageList[X[X.Count - 1]].DataList[Y[Y.Count - 1]].Data    = new MemoryStream(buff);
                    择b文件.Parent.ImageList[X[X.Count - 1]].DataList[Y[Y.Count - 1]].DataLen = buff.Length;
                    X.RemoveAt(X.Count - 1);
                    Y.RemoveAt(Y.Count - 1);
                    b文件组.Remove(择b文件);
                    择b文件 = 择b文件.Parent;
                    显示列表(浏览器, 择b文件);
                }
                else
                {
                    string[] 位置 = info.Item.SubItems[0].Text.Split('-');
                    x = Convert.ToInt32(位置[0]);
                    y = Convert.ToInt32(位置[1]);
                    if (info.Item.SubItems[2].Text == "b")
                    {
                        string[] 总位置 = info.Item.SubItems[0].Text.Split('-');
                        X.Add(Convert.ToInt32(总位置[0]));
                        Y.Add(Convert.ToInt32(总位置[1]));
                        bFile b文件 = 读取b(择b文件.ImageList[x].DataList[y].Data);
                        b文件.Parent = 择b文件;
                        择b文件       = b文件;
                        b文件组.Add(b文件);
                        显示列表(浏览器, 择b文件);
                    }
                    else
                    {
                        string 临时文件 = System.IO.Path.GetTempPath() + 规则化文件名(择b文件.ImageList[x].DataList[y].GetName()) + "." + 择b文件.ImageList[x].DataList[y].GetFileType();

                        择b文件.ImageList[x].DataList[y].Data.Seek(0, SeekOrigin.Begin);
                        byte[] buff = new byte[择b文件.ImageList[x].DataList[y].Data.Length];
                        择b文件.ImageList[x].DataList[y].Data.Read(buff, 0, (int)择b文件.ImageList[x].DataList[y].Data.Length);
                        择b文件.ImageList[x].DataList[y].Data.Seek(0, SeekOrigin.Begin);
                        File.WriteAllBytes(临时文件, buff);
                        System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo(临时文件);
                        System.Diagnostics.Process          Pro  = System.Diagnostics.Process.Start(Info);
                    }
                }
            }
        }
Beispiel #4
0
        public byte[] 获取b(bFile b文件)
        {
            FileStream 文件流 = new FileStream(System.IO.Path.GetTempPath() + "temp.b", FileMode.Create);

            文件流.Write(b文件.Hdr, 0, b文件.Hdr.Length);
            文件流.Write(b文件.bData.Hdr, 0, b文件.bData.Hdr.Length);
            文件流.Write(BitConverter.GetBytes(b文件.bData.offset), 0, BitConverter.GetBytes(b文件.bData.offset).Length);
            文件流.Write(b文件.bData.Data, 0, b文件.bData.Data.Length);
            foreach (bImage b图像 in b文件.ImageList)
            {
                文件流.Write(b图像.Hdr, 0, b图像.Hdr.Length);
                文件流.WriteByte(b图像.nData);
                foreach (bImgData b数据 in b图像.DataList)
                {
                    文件流.Write(b数据.Hdr, 0, b图像.Hdr.Length);
                    if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat15")
                    {
                        文件流.Write(b数据.Unkown15, 0, b数据.Unkown15.Length);
                    }
                    文件流.Write(BitConverter.GetBytes(b数据.NameLen), 0, BitConverter.GetBytes(b数据.NameLen).Length);
                    文件流.Write(b数据.Name, 0, b数据.Name.Length);
                    文件流.Write(BitConverter.GetBytes(b数据.HashLen), 0, BitConverter.GetBytes(b数据.HashLen).Length);
                    if (b数据.HashLen != 0)
                    {
                        文件流.Write(b数据.Hash, 0, b数据.Hash.Length);
                    }
                    文件流.Write(b数据.Unkown, 0, b数据.Unkown.Length);
                    文件流.Write(BitConverter.GetBytes(b数据.DataLen), 0, BitConverter.GetBytes(b数据.DataLen).Length);
                    b数据.Data.Seek(0, SeekOrigin.Begin);
                    byte[] buff = new byte[b数据.Data.Length];
                    b数据.Data.Read(buff, 0, (int)b数据.Data.Length);
                    b数据.Data.Seek(0, SeekOrigin.Begin);
                    文件流.Write(buff, 0, buff.Length);
                }
            }
            文件流.Write(b文件.bEnd, 0, b文件.bEnd.Length);

            byte[] buff2 = new byte[文件流.Length];
            文件流.Seek(0, SeekOrigin.Begin);
            文件流.Read(buff2, 0, (int)文件流.Length);
            文件流.Seek(0, SeekOrigin.Begin);
            文件流.Close();
            return(buff2);
        }
Beispiel #5
0
        private void 拖放文件(object sender, DragEventArgs e)
        {
            Array  aryFiles = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
            String File     = aryFiles.GetValue(0).ToString();

            if (打开b文件 != null)
            {
                打开b文件.Close();
            }

            打开的文件 = File;

            b文件组.Clear();
            X.Clear();
            Y.Clear();
            打开b文件 = new FileStream(File, FileMode.Open);
            b文件组.Add(读取b(打开b文件));
            择b文件 = b文件组[0];
            显示列表(浏览器, 择b文件);
        }
Beispiel #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            打开文件.FileName = "";
            打开文件.ShowDialog(this);
            if (打开文件.FileName != "")
            {
                if (打开b文件 != null)
                {
                    打开b文件.Close();
                }

                打开的文件 = 打开文件.FileName;

                b文件组.Clear();
                X.Clear();
                Y.Clear();
                打开b文件 = new FileStream(打开文件.FileName, FileMode.Open);
                b文件组.Add(读取b(打开b文件));
                择b文件 = b文件组[0];
                显示列表(浏览器, 择b文件);
            }
        }
Beispiel #7
0
        private void 另存为_Click(object sender, EventArgs e)
        {
            int   i   = 1;
            bFile b文件 = 择b文件;

            while (择b文件.Parent != null)
            {
                byte[] buff = 获取b(择b文件);
                择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].Data    = new MemoryStream(buff);
                择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].DataLen = buff.Length;
                i++;
                择b文件 = 择b文件.Parent;
            }
            择b文件 = b文件;

            保存文件.DefaultExt = "b";
            保存文件.FileName   = "";
            保存文件.ShowDialog(this);
            if (保存文件.FileName != "")
            {
                保存b(保存文件.FileName);
                MessageBox.Show("保存完成!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }
Beispiel #8
0
        private void 拖放文件(object sender, DragEventArgs e)
        {
            Array aryFiles = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
            String File = aryFiles.GetValue(0).ToString();
            if (打开b文件 != null)
            {
                打开b文件.Close();
            }

            打开的文件 = File;

            b文件组.Clear();
            X.Clear();
            Y.Clear();
            打开b文件 = new FileStream(File, FileMode.Open);
            b文件组.Add(读取b(打开b文件));
            选择b文件 = b文件组[0];
            显示列表(浏览器, 选择b文件);
        }
Beispiel #9
0
        public bFile 读取b(Stream bFileStream)
        {
            bFile b文件 = new bFile();

            byte[] buff;
            bFileStream.Read(b文件.Hdr, 0, 16);



            //System.Diagnostics.Debug.WriteLine(jis.GetString(b文件.Hdr));
            if (jis.GetString(b文件.Hdr).Substring(0, 6) == "abmp11" || jis.GetString(b文件.Hdr).Substring(0, 6) == "abmp12")
            {
                bFileStream.Read(b文件.bData.Hdr, 0, 16);
                if (jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata10" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata11" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata12" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata13")
                {
                    buff = new byte[4];
                    bFileStream.Read(buff, 0, 4);
                    b文件.bData.offset = BitConverter.ToInt32(buff, 0);

                    b文件.bData.Data = new byte[b文件.bData.offset];
                    bFileStream.Read(b文件.bData.Data, 0, b文件.bData.offset);

                    while (bFileStream.Position < bFileStream.Length - 1)
                    {
                        bImage b图像 = new bImage();
                        bFileStream.Read(b图像.Hdr, 0, 16);
                        System.Diagnostics.Debug.WriteLine(编码.GetString(b图像.Hdr));
                        if (jis.GetString(b图像.Hdr).Substring(0, 9) == "abimage10")
                        {
                            b图像.nData = (byte)bFileStream.ReadByte();
                            for (int i = 0; i < b图像.nData; i++)
                            {
                                bImgData b数据 = new bImgData();
                                bFileStream.Read(b数据.Hdr, 0, 16);

                                //System.Diagnostics.Debug.Write(bFileStream.Position);

                                if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat14" ||
                                    jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat13" ||
                                    jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat11")
                                {
                                    buff = new byte[2];
                                    bFileStream.Read(buff, 0, 2);
                                    b数据.NameLen = BitConverter.ToInt16(buff, 0);
                                    b数据.Name    = new byte[b数据.NameLen];
                                    bFileStream.Read(b数据.Name, 0, b数据.NameLen);

                                    bFileStream.Read(buff, 0, 2);
                                    b数据.HashLen = BitConverter.ToInt16(buff, 0);

                                    if (b数据.HashLen != 0)
                                    {
                                        b数据.Hash = new byte[b数据.HashLen];
                                        bFileStream.Read(b数据.Hash, 0, b数据.HashLen);
                                    }

                                    if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat14")
                                    {
                                        b数据.unkown = new byte[77];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }
                                    else if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat13")
                                    {
                                        b数据.unkown = new byte[13];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }
                                    else
                                    {
                                        b数据.unkown = new byte[1];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }

                                    buff = new byte[4];
                                    bFileStream.Read(buff, 0, 4);
                                    b数据.DataLen = BitConverter.ToInt32(buff, 0);


                                    System.Diagnostics.Debug.WriteLine(bFileStream.Position);
                                    buff = new byte[b数据.DataLen];
                                    bFileStream.Read(buff, 0, b数据.DataLen);
                                    b数据.Data = new MemoryStream(buff);
                                    System.Diagnostics.Debug.WriteLine(bFileStream.Position);

                                    b图像.DataList.Add(b数据);
                                }
                                else
                                {
                                    throw (new Exception("不是标准的b文件."));
                                }
                            }
                            b文件.ImageList.Add(b图像);
                        }
                        else if (编码.GetString(b图像.Hdr).Substring(0, 9) == "absound10")
                        {
                            b文件.bEnd = new byte[bFileStream.Length - bFileStream.Position + 0x10];
                            bFileStream.Seek(-0x10, SeekOrigin.Current);
                            bFileStream.Read(b文件.bEnd, 0, b文件.bEnd.Length);
                        }
                        else
                        {
                            throw (new Exception("不是标准的b文件."));
                        }
                    }
                }
                else
                {
                    throw (new Exception("不是标准的b文件."));
                }
            }
            else
            {
                throw (new Exception("不是标准的b文件."));
            }

            return(b文件);
        }
Beispiel #10
0
        public byte[] 获取b(bFile b文件)
        {
            FileStream 文件流 = new FileStream(System.IO.Path.GetTempPath() + "temp.b", FileMode.Create);
            文件流.Write(b文件.Hdr, 0, b文件.Hdr.Length);
            文件流.Write(b文件.bData.Hdr, 0, b文件.bData.Hdr.Length);
            文件流.Write(BitConverter.GetBytes(b文件.bData.offset), 0, BitConverter.GetBytes(b文件.bData.offset).Length);
            文件流.Write(b文件.bData.Data, 0, b文件.bData.Data.Length);
            foreach (bImage b图像 in b文件.ImageList)
            {
                文件流.Write(b图像.Hdr, 0, b图像.Hdr.Length);
                文件流.WriteByte(b图像.nData);
                foreach (bImgData b数据 in b图像.DataList)
                {
                    文件流.Write(b数据.Hdr, 0, b图像.Hdr.Length);
                    文件流.Write(BitConverter.GetBytes(b数据.NameLen), 0, BitConverter.GetBytes(b数据.NameLen).Length);
                    文件流.Write(b数据.Name, 0, b数据.Name.Length);
                    文件流.Write(BitConverter.GetBytes(b数据.HashLen), 0, BitConverter.GetBytes(b数据.HashLen).Length);
                    if (b数据.HashLen != 0)
                    {
                        文件流.Write(b数据.Hash, 0, b数据.Hash.Length);
                    }
                    文件流.Write(b数据.unkown, 0, b数据.unkown.Length);
                    文件流.Write(BitConverter.GetBytes(b数据.DataLen), 0, BitConverter.GetBytes(b数据.DataLen).Length);
                    b数据.Data.Seek(0, SeekOrigin.Begin);
                    byte[] buff = new byte[b数据.Data.Length];
                    b数据.Data.Read(buff, 0, (int)b数据.Data.Length);
                    b数据.Data.Seek(0, SeekOrigin.Begin);
                    文件流.Write(buff, 0, buff.Length);
                }
            }
            文件流.Write(b文件.bEnd, 0, b文件.bEnd.Length);

            byte[] buff2 = new byte[文件流.Length];
            文件流.Seek(0, SeekOrigin.Begin);
            文件流.Read(buff2, 0, (int)文件流.Length);
            文件流.Seek(0, SeekOrigin.Begin);
            文件流.Close();
            return buff2;
        }
Beispiel #11
0
        public bFile 读取b(Stream bFileStream)
        {
            bFile b文件 = new bFile();
            byte[] buff;
            bFileStream.Read(b文件.Hdr, 0, 16);

            //System.Diagnostics.Debug.WriteLine(jis.GetString(b文件.Hdr));
            if (jis.GetString(b文件.Hdr).Substring(0, 6) == "abmp11" || jis.GetString(b文件.Hdr).Substring(0, 6) == "abmp12")
            {
                bFileStream.Read(b文件.bData.Hdr, 0, 16);
                if (jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata10" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata11" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata12" ||
                    jis.GetString(b文件.bData.Hdr).Substring(0, 8) == "abdata13")
                {
                    buff = new byte[4];
                    bFileStream.Read(buff, 0, 4);
                    b文件.bData.offset = BitConverter.ToInt32(buff, 0);

                    b文件.bData.Data = new byte[b文件.bData.offset];
                    bFileStream.Read(b文件.bData.Data, 0, b文件.bData.offset);

                    while (bFileStream.Position < bFileStream.Length - 1)
                    {
                        bImage b图像 = new bImage();
                        bFileStream.Read(b图像.Hdr, 0, 16);
                        System.Diagnostics.Debug.WriteLine(编码.GetString(b图像.Hdr));
                        if (jis.GetString(b图像.Hdr).Substring(0, 9) == "abimage10")
                        {
                            b图像.nData = (byte)bFileStream.ReadByte();
                            for (int i = 0; i < b图像.nData; i++)
                            {
                                bImgData b数据 = new bImgData();
                                bFileStream.Read(b数据.Hdr, 0, 16);

                                //System.Diagnostics.Debug.Write(bFileStream.Position);

                                if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat14" ||
                                    jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat13" ||
                                    jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat11")
                                {
                                    buff = new byte[2];
                                    bFileStream.Read(buff, 0, 2);
                                    b数据.NameLen = BitConverter.ToInt16(buff, 0);
                                    b数据.Name = new byte[b数据.NameLen];
                                    bFileStream.Read(b数据.Name, 0, b数据.NameLen);

                                    bFileStream.Read(buff, 0, 2);
                                    b数据.HashLen = BitConverter.ToInt16(buff, 0);

                                    if (b数据.HashLen != 0)
                                    {
                                        b数据.Hash = new byte[b数据.HashLen];
                                        bFileStream.Read(b数据.Hash, 0, b数据.HashLen);
                                    }

                                    if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat14")
                                    {
                                        b数据.unkown = new byte[77];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }
                                    else if (jis.GetString(b数据.Hdr).Substring(0, 10) == "abimgdat13")
                                    {
                                        b数据.unkown = new byte[13];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }
                                    else
                                    {
                                        b数据.unkown = new byte[1];
                                        bFileStream.Read(b数据.unkown, 0, b数据.unkown.Length);
                                    }

                                    buff = new byte[4];
                                    bFileStream.Read(buff, 0, 4);
                                    b数据.DataLen = BitConverter.ToInt32(buff,0);

                                    System.Diagnostics.Debug.WriteLine(bFileStream.Position);
                                    buff = new byte[b数据.DataLen];
                                    bFileStream.Read(buff, 0, b数据.DataLen);
                                    b数据.Data = new MemoryStream(buff);
                                    System.Diagnostics.Debug.WriteLine(bFileStream.Position);

                                    b图像.DataList.Add(b数据);
                                }
                                else
                                {
                                    throw (new Exception("不是标准的b文件."));
                                }

                            }
                            b文件.ImageList.Add(b图像);
                        }
                        else if (编码.GetString(b图像.Hdr).Substring(0, 9) == "absound10")
                        {
                            b文件.bEnd = new byte[bFileStream.Length - bFileStream.Position + 0x10];
                            bFileStream.Seek(-0x10, SeekOrigin.Current);
                            bFileStream.Read(b文件.bEnd, 0, b文件.bEnd.Length);
                        }
                        else
                        {
                            throw (new Exception("不是标准的b文件."));
                        }

                    }

                }
                else
                {
                    throw (new Exception("不是标准的b文件."));
                }
            }
            else
            {
                throw (new Exception("不是标准的b文件."));
            }

            return b文件;
        }
Beispiel #12
0
        public void 显示列表(ListView 列表,bFile b文件)
        {
            列表.Items.Clear();

            if (b文件.Parent != null)
            {
                ListViewItem li =new ListViewItem(".");
                li.SubItems.Add("...");
                列表.Items.Add(li);
            }
            int i = 0;
            int n = 0;
            foreach (bImage b图像 in b文件.ImageList)
            {
                foreach(bImgData b数据 in b图像.DataList)
                {
                    ListViewItem li = new ListViewItem(n.ToString() + "-" + i.ToString());
                    li.SubItems.Add(b数据.GetName());
                    li.SubItems.Add(b数据.GetFileType());
                    li.SubItems.Add(b数据.DataLen.ToString());
                    列表.Items.Add(li);
                    i++;
                }
                n++;
            }
        }
Beispiel #13
0
 public bFile()
 {
     Parent = null;
 }
Beispiel #14
0
 public bFile()
 {
     Parent = null;
 }
Beispiel #15
0
        private void 另存为_Click(object sender, EventArgs e)
        {
            int i = 1;
            bFile b文件 = 选择b文件;
            while (选择b文件.Parent != null)
            {
                byte[] buff = 获取b(选择b文件);
                选择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].Data = new MemoryStream(buff);
                选择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].DataLen = buff.Length;
                i++;
                选择b文件 = 选择b文件.Parent;
            }
            选择b文件 = b文件;

            保存文件.DefaultExt = "b";
            保存文件.FileName = "";
            保存文件.ShowDialog(this);
            if (保存文件.FileName != "")
            {
                保存b(保存文件.FileName);
                MessageBox.Show("保存完成!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }
Beispiel #16
0
        private void 保存_Click(object sender, EventArgs e)
        {
            int i = 1;
            bFile b文件 = 选择b文件;
            while (选择b文件.Parent != null)
            {
                byte[] buff = 获取b(选择b文件);
                选择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].Data = new MemoryStream(buff);
                选择b文件.Parent.ImageList[X[X.Count - i]].DataList[Y[Y.Count - i]].DataLen = buff.Length;
                i++;
                选择b文件 = 选择b文件.Parent;
            }
            选择b文件 = b文件;
            保存b(打开b文件);

            b文件组.Clear();
            X.Clear();
            Y.Clear();
            b文件组.Add(读取b(打开b文件));
            选择b文件 = b文件组[0];
            显示列表(浏览器, 选择b文件);

            MessageBox.Show("保存完成!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
Beispiel #17
0
 public bFile(bFile 父)
 {
     Parent = 父;
 }
Beispiel #18
0
        private void button1_Click(object sender, EventArgs e)
        {
            打开文件.FileName = "";
            打开文件.ShowDialog(this);
            if (打开文件.FileName != "")
            {
                if (打开b文件 != null)
                {
                    打开b文件.Close();
                }

                打开的文件 = 打开文件.FileName;

                b文件组.Clear();
                X.Clear();
                Y.Clear();
                打开b文件 = new FileStream(打开文件.FileName, FileMode.Open);
                b文件组.Add(读取b(打开b文件));
                选择b文件 = b文件组[0];
                显示列表(浏览器, 选择b文件);
            }
        }
Beispiel #19
0
 public bFile(bFile 父)
 {
     Parent = 父;
 }
Beispiel #20
0
        private void 浏览器_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewHitTestInfo info = 浏览器.HitTest(e.X, e.Y);

            if (info.Item != null)
            {
                int x,y;
                if (info.Item.SubItems[0].Text == ".")
                {
                    byte[] buff = 获取b(选择b文件);
                    选择b文件.Parent.ImageList[X[X.Count - 1]].DataList[Y[Y.Count - 1]].Data = new MemoryStream(buff);
                    选择b文件.Parent.ImageList[X[X.Count - 1]].DataList[Y[Y.Count - 1]].DataLen = buff.Length;
                    X.RemoveAt(X.Count - 1);
                    Y.RemoveAt(Y.Count - 1);
                    b文件组.Remove(选择b文件);
                    选择b文件 = 选择b文件.Parent;
                    显示列表(浏览器, 选择b文件);
                }
                else
                {
                    string[] 位置 = info.Item.SubItems[0].Text.Split('-');
                    x = Convert.ToInt32(位置[0]);
                    y = Convert.ToInt32(位置[1]);
                    if (info.Item.SubItems[2].Text == "b")
                    {
                        string[] 总位置 = info.Item.SubItems[0].Text.Split('-');
                        X.Add(Convert.ToInt32(总位置[0]));
                        Y.Add(Convert.ToInt32(总位置[1]));
                        bFile b文件 = 读取b(选择b文件.ImageList[x].DataList[y].Data);
                        b文件.Parent = 选择b文件;
                        选择b文件 = b文件;
                        b文件组.Add(b文件);
                        显示列表(浏览器, 选择b文件);
                    }
                    else
                    {
                        string 临时文件 = System.IO.Path.GetTempPath() + 规则化文件名(选择b文件.ImageList[x].DataList[y].GetName()) + "." + 选择b文件.ImageList[x].DataList[y].GetFileType();

                        选择b文件.ImageList[x].DataList[y].Data.Seek(0, SeekOrigin.Begin);
                        byte[] buff = new byte[选择b文件.ImageList[x].DataList[y].Data.Length];
                        选择b文件.ImageList[x].DataList[y].Data.Read(buff, 0, (int)选择b文件.ImageList[x].DataList[y].Data.Length);
                        选择b文件.ImageList[x].DataList[y].Data.Seek(0, SeekOrigin.Begin);
                        File.WriteAllBytes(临时文件, buff);
                        System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo(临时文件);
                        System.Diagnostics.Process Pro = System.Diagnostics.Process.Start(Info);
                    }
                }

            }
        }