ScaleConvert类的摘要说明。
访问: Public
基类: Object
成员 说明
ScaleConvert 构造函数
ScaleMode 获得或设置坐标系统
CustomRectF 自定义样式时的区域尺寸
SizeF 自定义样式时的实际参照区域尺寸
ToPixelX(float v) X轴:根据当前的坐标系统模式,计算转换为Pixel模式后的值。
ToPixelX(float v,enumScaleModeList source) X轴:根据提供的坐标系统模式,计算转换为Pixel模式后的值。
PixelToX(float v) X轴:将Pixel模式的值按照当前的坐标系统模式计算转换后的值。
PixelToX(float v,enumScaleModeList target) X轴:将Pixel模式的值按照提供的坐标系统模式计算转换后的值。
ToPixelY(float v) Y轴:根据当前的坐标系统模式,计算转换为Pixel模式后的值。
ToPixelY(float v,enumScaleModeList source) Y轴:根据提供的坐标系统模式,计算转换为Pixel模式后的值。
PixelToY(float v)Y轴:将Pixel模式的值按照当前的坐标系统模式计算转换后的值。
PixelToY(float v,enumScaleModeList target) Y轴:将Pixel模式的值按照提供的坐标系统模式计算转换后的值。
代码如下:
using
System;
using
System.Drawing ;

namespace
System.Shangfei

...
{
namespace Controls

...{

/**//// <summary>
/// 坐标系统枚举列表
/// </summary>
public enum enumScaleModeList

...{
sfPoints = 0,
sfPixels = 1,
sfCentimetres = 2,
sfInches = 3,
sfCustom=4
}

/**//// <summary>
/// ScaleConvert 的摘要说明。
/// </summary>
public class ScaleConvert

...{

/**//// <summary>
/// 坐标系统
/// </summary>
private enumScaleModeList _ScaleMode;


/**//// <summary>
/// 不同坐标模式与Pixels模式的X轴比例因子
/// </summary>
private float _ScaleFactorX;

/**//// <summary>
/// 不同坐标模式与Pixels模式的Y轴比例因子
/// </summary>
private float _ScaleFactorY;

/**////<summary>
/// 自定义样式时的区域尺寸
/// </summary>
private RectangleF _CustomRect=new RectangleF(0,0,0,0);


/**////<summary>
/// 自定义样式时的实际参照区域尺寸
/// </summary>
private SizeF _Size=new SizeF(0,0);

构造函数#region 构造函数

/**//// <summary>
/// 构造函数
/// </summary>
public ScaleConvert()

...{
//
// TODO: 在此处添加构造函数逻辑
//
_ScaleMode=enumScaleModeList.sfPixels ;
}

/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="ScaleMode">坐标系统模式</param>
public ScaleConvert(enumScaleModeList ScaleMode)

...{
//
// TODO: 在此处添加构造函数逻辑
//
_ScaleMode=ScaleMode ;
}

/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="referenceSize">自定义样式时的实际参照区域尺寸</param>
/// <param name="CustomRect">自定义样式时的区域尺寸</param>
public ScaleConvert(SizeF referenceSize,Rectangle CustomRect)

...{
//
// TODO: 在此处添加构造函数逻辑
//
_ScaleMode=enumScaleModeList.sfCustom ;
_Size=referenceSize;
_CustomRect=CustomRect;
_ScaleFactorX=CaleScaleFactorX(_ScaleMode);
_ScaleFactorY=CaleScaleFactorY(_ScaleMode);
}
#endregion


公共属性#region 公共属性

/**//// <summary>
/// 坐标系统
/// </summary>
public enumScaleModeList ScaleMode

...{

get ...{return _ScaleMode;}
set

...{
_ScaleMode=value;
_ScaleFactorX=CaleScaleFactorX(_ScaleMode);
_ScaleFactorY=CaleScaleFactorY(_ScaleMode);
}
}

/**////<summary>
/// 自定义样式时的区域尺寸
/// </summary>
public RectangleF CustomRectF

...{

get ...{return _CustomRect;}
set

...{
_CustomRect=value;
if (_ScaleMode==enumScaleModeList.sfCustom)

...{
_ScaleFactorX=CaleScaleFactorX(_ScaleMode);
_ScaleFactorY=CaleScaleFactorY(_ScaleMode);
}
}
}

/**////<summary>
/// 自定义样式时的实际参照区域尺寸
/// </summary>
public SizeF SizeF

...{

get ...{return _Size;}
set

...{
_Size=value;
if (_ScaleMode==enumScaleModeList.sfCustom)

...{
_ScaleFactorX=CaleScaleFactorX(_ScaleMode);
_ScaleFactorY=CaleScaleFactorY(_ScaleMode);
}
}
}
#endregion


坐标转换函数#region 坐标转换函数

/**//// <summary>
/// 返回不同模式下的X轴比例因子
/// </summary>
/// <param name="target">需要的坐标系统模式</param>
/// <returns>返回不同模式下的比例因子</returns>
private float CaleScaleFactorX(enumScaleModeList target)

...{
float f=1;
switch(target)

...{
case enumScaleModeList.sfPoints :
f=96;
break;
case enumScaleModeList.sfPixels:
f=1;
break;
case enumScaleModeList.sfCentimetres :
f=38;
break;
case enumScaleModeList.sfInches :
f=96;
break;
case enumScaleModeList.sfCustom:
if (_CustomRect.Width>0)

...{
f=_Size.Width /(_CustomRect.Width+(_CustomRect.Left <0?-_CustomRect.Left:0));
}
break;
}
return f;
}

/**//// <summary>
/// 返回不同模式下的Y轴比例因子
/// </summary>
/// <param name="target">需要的坐标系统模式</param>
/// <returns>返回不同模式下的比例因子</returns>
private float CaleScaleFactorY(enumScaleModeList target)

...{
float f=1;
switch(target)

...{
case enumScaleModeList.sfPoints :
f=96;
break;
case enumScaleModeList.sfPixels:
f=1;
break;
case enumScaleModeList.sfCentimetres :
f=38;
break;
case enumScaleModeList.sfInches :
f=96;
break;
case enumScaleModeList.sfCustom:
if (_CustomRect.Height >0)

...{
f=_Size.Height /(_CustomRect.Height+(_CustomRect.Top <0?-_CustomRect.Top :0));
}
break;
}
return f;
}

/**//// <summary>
/// X轴:根据当前的坐标系统模式,计算转换为Pixel模式后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <returns>返回计算后的值</returns>
public float ToPixelX(float v)

...{
return v*_ScaleFactorX;
}

/**//// <summary>
/// X轴:根据提供的坐标系统模式,计算转换为Pixel模式后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <param name="source">当前参数v的坐标系统模式</param>
/// <returns>返回计算后的值</returns>
public float ToPixelX(float v,enumScaleModeList source)

...{
return v*CaleScaleFactorX(source);
}

/**//// <summary>
/// X轴:将Pixel模式的值按照当前的坐标系统模式计算转换后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <returns>返回计算后的值</returns>
public float PixelToX(float v)

...{
return v/_ScaleFactorX;
}

/**//// <summary>
/// X轴:将Pixel模式的值按照提供的坐标系统模式计算转换后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <param name="target">转换后的坐标系统模式</param>
/// <returns>返回计算后的值</returns>
public float PixelToX(float v,enumScaleModeList target)

...{
return v/CaleScaleFactorX(target);
}

/**//// <summary>
/// Y轴:根据当前的坐标系统模式,计算转换为Pixel模式后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <returns>返回计算后的值</returns>
public float ToPixelY(float v)

...{
return v*_ScaleFactorY;
}

/**//// <summary>
/// Y轴:根据提供的坐标系统模式,计算转换为Pixel模式后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <param name="source">当前参数v的坐标系统模式</param>
/// <returns>返回计算后的值</returns>
public float ToPixelY(float v,enumScaleModeList source)

...{
return v*CaleScaleFactorY(source);
}

/**//// <summary>
/// Y轴:将Pixel模式的值按照当前的坐标系统模式计算转换后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <returns>返回计算后的值</returns>
public float PixelToY(float v)

...{
return v/_ScaleFactorY;
}

/**//// <summary>
/// Y轴:将Pixel模式的值按照提供的坐标系统模式计算转换后的值。
/// </summary>
/// <param name="v">需要转换的值</param>
/// <param name="target">转换后的坐标系统模式</param>
/// <returns>返回计算后的值</returns>
public float PixelToY(float v,enumScaleModeList target)

...{
return v/CaleScaleFactorY(target);
}
#endregion

}//class
}
}
