109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.Globalization;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Charts
 | 
						|
{
 | 
						|
    public class PointFConverter : ExpandableObjectConverter
 | 
						|
    {
 | 
						|
        #region CanConvertTo
 | 
						|
 | 
						|
        public override bool CanConvertTo(
 | 
						|
            ITypeDescriptorContext context, Type destinationType)
 | 
						|
        {
 | 
						|
            if (destinationType == typeof(string))
 | 
						|
                return (true);
 | 
						|
 | 
						|
            return (base.CanConvertTo(context, destinationType));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ConvertTo
 | 
						|
 | 
						|
        public override object ConvertTo(
 | 
						|
            ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 | 
						|
        {
 | 
						|
            if (destinationType == typeof(string))
 | 
						|
            {
 | 
						|
                PointF pf = (PointF)value;
 | 
						|
 | 
						|
                return (String.Format("{0:f}, {1:f}", pf.X, pf.Y));
 | 
						|
            }
 | 
						|
 | 
						|
            return (base.ConvertTo(context, culture, value, destinationType));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CanConvertFrom
 | 
						|
 | 
						|
        public override bool CanConvertFrom(
 | 
						|
            ITypeDescriptorContext context, Type sourceType)
 | 
						|
        {
 | 
						|
            if (sourceType == typeof(string))
 | 
						|
                return (true);
 | 
						|
 | 
						|
            return (base.CanConvertFrom(context, sourceType));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ConvertFrom
 | 
						|
 | 
						|
        public override object ConvertFrom(
 | 
						|
            ITypeDescriptorContext context, CultureInfo culture, object value)
 | 
						|
        {
 | 
						|
            if (value is string)
 | 
						|
            {
 | 
						|
                string[] values = ((string)value).Split(',');
 | 
						|
 | 
						|
                if (values.Length != 2)
 | 
						|
                    throw new ArgumentException("Invalid value to convert.");
 | 
						|
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    float x = float.Parse(values[0]);
 | 
						|
                    float y = float.Parse(values[1]);
 | 
						|
 | 
						|
                    PointF pf = new PointF(x, y);
 | 
						|
 | 
						|
                    return (pf);
 | 
						|
                }
 | 
						|
                catch
 | 
						|
                {
 | 
						|
                    throw new ArgumentException("Invalid value to convert.");
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return base.ConvertFrom(context, culture, value);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetCreateInstanceSupported
 | 
						|
 | 
						|
        public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
 | 
						|
        {
 | 
						|
            return (true);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CreateInstance
 | 
						|
 | 
						|
        public override object CreateInstance(
 | 
						|
            ITypeDescriptorContext context, IDictionary propertyValues)
 | 
						|
        {
 | 
						|
            if (propertyValues != null)
 | 
						|
                return (new PointF((float)propertyValues["X"], (float)propertyValues["Y"]));
 | 
						|
 | 
						|
            return (null);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |