Program.cs
using System;
using System.Reflection;
namespace NetCoreExample
{
/// <summary>
/// This example demonstrates the use of "ImageToVideo" ActiveX object from .NET Core application using the reflection.
/// </summary>
class Program
{
static void Main(string[] args)
{
// Create an instance of BytescoutImageToVideo.ImageToVideo ActiveX object
object converter = Activator.CreateInstance(Type.GetTypeFromProgID("BytescoutImageToVideo.ImageToVideo", true));
// Activate the component
SetProperty(converter, "RegistrationName", "demo");
SetProperty(converter, "RegistrationKey", "demo");
// Get Slides collection
object slides = GetProperty(converter, "Slides");
// Set default "in" effect for slides (you can also set effects for each slide separately)
SetProperty(slides, "DefaultSlideInEffect", 1); // 1 - "Fade-in" effect\
// Set default "in" effect duration (you can also set it for each slide separately)
SetProperty(slides, "DefaultSlideInEffectDuration", 500);
// Add slides and set durations
object slide1 = InvokeMethod(converter, "AddImageFromFileName", new object[] { @".\slide1.jpg" });
SetProperty(slide1, "Duration", 3000);
object slide2 = InvokeMethod(converter, "AddImageFromFileName", new object[] { @".\slide2.jpg" });
SetProperty(slide2, "Duration", 3000);
object slide3 = InvokeMethod(converter, "AddImageFromFileName", new object[] { @".\slide3.jpg" });
SetProperty(slide3, "Duration", 3000);
// Set output video size
SetProperty(converter, "OutputWidth", 640);
SetProperty(converter, "OutputHeight", 480);
// Set output video file name
SetProperty(converter, "OutputVideoFileName", "result.wmv");
// Run the conversion
InvokeMethod(converter, "RunAndWait", null);
}
static void SetProperty(object target, string propertyName, object value)
{
target.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, target, new object[] { value });
}
static object GetProperty(object target, string propertyName)
{
return target.GetType().InvokeMember(propertyName, BindingFlags.GetProperty, null, target, null);
}
static object InvokeMethod(object target, string methodName, object[] parameters)
{
return target.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, target, parameters);
}
}
}