/// <summary> /// \t, X, Y. 默认pos(-100, -100) /// </summary> /// <returns></returns> public List <KeyValuePair <XXParticleElement, List <string> > > RenderT() { List <KeyValuePair <XXParticleElement, List <string> > > result = new List <KeyValuePair <XXParticleElement, List <string> > >(); foreach (KeyValuePair <XXParticleElement, List <ASSPointF> > pair in RenderPoint()) { foreach (ASSPointF pt in pair.Value) { pt.X += 100; pt.Y += 100; } StringBuilder sbx = new StringBuilder(); StringBuilder sby = new StringBuilder(); for (int i = 0; i < pair.Value.Count; i += 10) { List <ASSPointF> ptList = new List <ASSPointF>(); for (int j = i; j < i + 10 && j < pair.Value.Count; j++) { ptList.Add(pair.Value[j]); } if (ptList.Count > 0 && i == 0) { sbx.Append(ASSEffect.fscx((int)(ptList[0].X * 100))); sby.Append(ASSEffect.fscy((int)(ptList[0].Y * 100))); } sbx.Append(ASSEffect.t(ptList[0].T - pair.Key.Born, ptList[ptList.Count - 1].T - pair.Key.Born + InterpolationPrecision, ASSEffect.fscx((int)(ptList[ptList.Count - 1].X * 100)).t())); sby.Append(ASSEffect.t(ptList[0].T - pair.Key.Born, ptList[ptList.Count - 1].T - pair.Key.Born + InterpolationPrecision, ASSEffect.fscy((int)(ptList[ptList.Count - 1].Y * 100)).t())); } List <string> tmp = new List <string>(); tmp.Add(sbx.ToString()); tmp.Add(sby.ToString()); result.Add(new KeyValuePair <XXParticleElement, List <string> >(pair.Key, tmp)); } return(result); }
public override void Run() { ASS ass_in = ASS.FromFile(this.InFileName); ASS ass_out = new ASS(); ass_out.Header = ass_in.Header; ass_out.Events = new List <ASSEvent>(); Random rnd = new Random(); string ptstr = @"{\p1}m 0 0 l 1 0 1 1 0 1"; char ch = '雨'; int x = 300; int y = 300; double r0 = 15; double r1 = 30; string col1 = "FFFC94"; string col2 = "FF94D1"; string col3 = "FFFFFF"; StringMask mask = GetMask(ch + "", x, y); double t0 = 0; double t3 = 10; ass_out.AppendEvent(0, "Default", t0, t3, ASSEffect.pos(x, y) + ASSEffect.a(1, "FF") + ASSEffect.c(1, col2) + ASSEffect.a(3, "FF") + ch); for (int i = 0; i < 1; i++) { ass_out.AppendEvent(0, "Default", t0, t3, ASSEffect.pos(x, y) + ASSEffect.a(1, "00") + ASSEffect.c(1, col2) + ASSEffect.org(x - 200, y) + ASSEffect.t(0, t3 - t0, ASSEffect.fry(-360).t()) + ASSEffect.a(3, "FF") + ASSEffect.be(1) + ASSEffect.bord(0) + ASSEffect.t(0, (t3 - t0) * 0.125, ASSEffect.fscx(30).t()) + ASSEffect.t((t3 - t0) * 0.125, (t3 - t0) * 0.125 * 2, ASSEffect.fscx(100).t()) + ASSEffect.t(0, (t3 - t0) * 0.25, ASSEffect.fscy(40).t()) + ASSEffect.bord(1) + ch); } /* * for (int agi = 0; agi < 360; agi += 20) * { * double x0 = x + r0 * Math.Cos(0); * double y0 = y + r0 * Math.Sin(0); * double x1 = x + r1 * Math.Cos(0); * double y1 = y + r1 * Math.Sin(0); * * double t0 = 1; * double t1 = t0 + 1.8; * * ass_out.AppendEvent(2, "pt", t0, t1, * ASSEffect.an(5) + * ASSEffect.move(x0, y0, x1, y1) + ASSEffect.org(x, y) + ASSEffect.frz(agi) + * ASSEffect.a(1, "00") + ASSEffect.c(1, "FFFFFF") + * ASSEffect.a(3, "44") + ASSEffect.c(3, "FFFFFF") + * ASSEffect.t(0, t1 - t0, ASSEffect.frz(agi + 360).t()) + * ASSEffect.ybord(10) + ASSEffect.xbord(0) + ASSEffect.be(1) + * ptstr); * * ass_out.AppendEvent(2, "pt", t0, t1, * ASSEffect.an(5) + * ASSEffect.move(x0, y0, x1, y1) + ASSEffect.org(x, y) + ASSEffect.frz(agi) + * ASSEffect.a(1, "00") + ASSEffect.c(1, "FFFFFF") + * ASSEffect.a(3, "22") + ASSEffect.c(3, col1) + * ASSEffect.t(0, t1 - t0, ASSEffect.frz(agi + 360).t()) + * ASSEffect.ybord(11) + ASSEffect.xbord(0) + ASSEffect.blur(2) + * ptstr); * } * */ ass_out.SaveFile(OutFileName); }