static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage AlphaTab.ScoreDump.exe Path");
return;
}
// load score
var score = ScoreLoader.LoadScore(args[0]);
// render score with svg engine
var settings = Settings.Defaults;
settings.Engine = "gdi";
var renderer = new ScoreRenderer(settings);
// iterate tracks
for (int i = 0, j = score.Tracks.Count; i < j; i++)
{
var track = score.Tracks[i];
// render track
Console.WriteLine("Rendering track {0} - {1}", i + 1, track.Name);
var images = new List<Image>();
var totalWidth = 0;
var totalHeight = 0;
renderer.PartialRenderFinished += r =>
{
images.Add((Image) r.RenderResult);
};
renderer.RenderFinished += r =>
{
totalWidth = (int) r.TotalWidth;
totalHeight = (int) r.TotalHeight;
};
renderer.Render(track);
// write png
var info = new FileInfo(args[0]);
var path = Path.Combine(info.DirectoryName, Path.GetFileNameWithoutExtension(info.Name) + "-" + i + ".png");
using (var bmp = new Bitmap(totalWidth, totalHeight))
{
int y = 0;
using (var g = Graphics.FromImage(bmp))
{
foreach (var image in images)
{
g.DrawImage(image, new Rectangle(0, y, image.Width, image.Height),
new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
y += image.Height;
}
}
bmp.Save(path, ImageFormat.Png);
}
}
}