public void btnSetting_Click(object sender, EventArgs e) { AvatarCanvas canvas = new AvatarCanvas(); canvas.LoadZ(); canvas.LoadActions(); canvas.LoadEmotions(); /* * cmbAction.Items.Clear(); * foreach (var action in canvas.Actions) * { * ComboItem cmbItem = new ComboItem(action.Name); * switch (action.Level) * { * case 0: * cmbItem.FontStyle = System.Drawing.FontStyle.Bold; * cmbItem.ForeColor = Color.Indigo; * break; * * case 1: * cmbItem.ForeColor = Color.Indigo; * break; * } * cmbAction.Items.Add(cmbItem); * }*/ canvas.ActionName = "stand1"; canvas.EmotionName = "default"; canvas.TamingActionName = "stand1"; AddPart(canvas, "Character\\00002000.img"); AddPart(canvas, "Character\\00012000.img"); AddPart(canvas, "Character\\Face\\00020000.img"); AddPart(canvas, "Character\\Hair\\00030000.img"); AddPart(canvas, "Character\\Coat\\01040036.img"); AddPart(canvas, "Character\\Pants\\01060026.img"); AddPart(canvas, "Character\\Weapon\\01442000.img"); //AddPart(canvas, "Character\\Weapon\\01382007.img"); //AddPart(canvas, "Character\\Weapon\\01332000.img"); //AddPart(canvas, "Character\\Weapon\\01342000.img"); var faceFrames = canvas.GetFaceFrames(canvas.EmotionName); foreach (var action in canvas.Actions) { break; Gif gif = new Gif(); var actionFrames = canvas.GetActionFrames(action.Name); foreach (var frame in actionFrames) { if (frame.Delay != 0) { var bone = canvas.CreateFrame(frame, faceFrames[0], null); var bmp = canvas.DrawFrame(bone, frame); Point pos = bmp.OpOrigin; pos.Offset(frame.Flip ? new Point(-frame.Move.X, frame.Move.Y) : frame.Move); GifFrame f = new GifFrame(bmp.Bitmap, new Point(-pos.X, -pos.Y), Math.Abs(frame.Delay)); gif.Frames.Add(f); } } var gifFile = gif.EncodeGif(Color.Black); string fileName = "D:\\ms\\" + action.Name.Replace('\\', '.'); gifFile.Save(fileName + (gif.Frames.Count == 1 ? ".png" : ".gif")); gifFile.Dispose(); } { Gif gif = CreateKeyDownAction(canvas); var gifFile = gif.EncodeGif(Color.Transparent, 0); string fileName = "D:\\d12"; if (false) { var fd = new System.Drawing.Imaging.FrameDimension(gifFile.FrameDimensionsList[0]); //获取帧数(gif图片可能包含多帧,其它格式图片一般仅一帧) int count = gifFile.GetFrameCount(fd); for (int i = 0; i < count; i++) { gifFile.SelectActiveFrame(fd, i); gifFile.Save(fileName + "_" + i + ".png", System.Drawing.Imaging.ImageFormat.Png); } } gifFile.Save(fileName + (gif.Frames.Count == 1 ? ".png" : ".gif")); gifFile.Dispose(); } }