//
// This code is part of Document Solutions for Imaging demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Imaging;
namespace DsImagingWeb.Demos
{
// This sample loads the .ICO generated by the MakeIco sample,
// and renders all frames found in it along the diagonal of the
// resulting image.
public class ReadIco
{
public GcBitmap GenerateImage(Size pixelSize, float dpi, bool opaque, string[] sampleParams = null)
{
int x = 0, y = 0;
var srcPath = Path.Combine("Resources", "ImagesBis", "mescius-logomark-c.ico");
using (var bmp = new GcBitmap())
using (var ico = new GcIco(srcPath))
{
var w = ico.Frames.Sum(f_ => f_.Width);
var h = ico.Frames.Sum(f_ => f_.Height);
bmp.CreateImage(w, h, false);
bmp.Clear();
for (int i = 0; i < ico.Frames.Count; ++i)
{
using (var tbmp = ico.Frames[i].ToGcBitmap())
{
bmp.BitBlt(tbmp, x, y);
x += tbmp.PixelWidth;
y += tbmp.PixelHeight;
}
}
return bmp.Clip(new Rectangle(0, 0, x, y));
}
}
}
}