using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;
namespace Dongke.WinForm.Controls.InvoiceLayout
{
///
/// 图形item
///
[Serializable]
public abstract class GraphicsItem : LayoutItem
{
#region 成员变量
///
/// 背景填充色
///
protected Color _fillColor = Color.Black;
///
/// 背景透明
///
protected bool _isTransparent = true;
///
/// 边框色
///
protected Color _lineColor = Color.Black;
///
/// 边框宽 (mm単位)
///
protected float _lineWidth = 0.1f;
///
/// 边框宽 - 绘制用 (mm単位)
///
protected float _lineWidthDraw = 0.1f;
#endregion 成员变量
#region 属性
///
/// 获取或设置Item的边框颜色。
///
public Color LineColor
{
get
{
return _lineColor;
}
set
{
if (!value.Equals(_lineColor))
{
_lineColor = value;
SetShapeProperty(GetZoom());
if (Owner != null)
{
Owner.SetItemChangedArgs(this, ItemChangeType.Modified);
}
}
}
}
///
/// 获取或设置Item的边框宽度。
///
///
/// 设置小于0时,不显示边框。
///
public float LineWidth
{
get
{
return _lineWidth;
}
set
{
if (value < 0)
{
return;
}
if (value != _lineWidth)
{
_lineWidth = value;
float zoom = GetZoom();
_lineWidthDraw = _lineWidth * zoom;
SetShapeProperty(zoom);
if (Owner != null)
{
Owner.SetItemChangedArgs(this, ItemChangeType.Modified);
}
}
}
}
///
/// 获取或设置Item的背景填充色。
///
public Color FillColor
{
get
{
return _fillColor;
}
set
{
if (!value.Equals(_fillColor))
{
_fillColor = value;
SetShapeProperty(GetZoom());
if (Owner != null)
{
Owner.SetItemChangedArgs(this, ItemChangeType.Modified);
}
}
}
}
///
/// 获取或设置Item的背景是否透明。
///
public bool Transparent
{
get
{
return _isTransparent;
}
set
{
if (value != _isTransparent)
{
_isTransparent = value;
SetShapeProperty(GetZoom());
if (Owner != null)
{
Owner.SetItemChangedArgs(this, ItemChangeType.Modified);
}
}
}
}
#endregion 属性
#region 构造函数
///
/// 构造函数
///
/// Layoutbox
/// item类别
internal GraphicsItem(LayoutBox box, ItemType itemType)
: base(box, itemType)
{
_width = LayoutConsts.SHAPE_ITEM_SIZE_DEFAULT_WIDTH;
_height = LayoutConsts.SHAPE_ITEM_SIZE_DEFAULT_HEIGHT;
}
#endregion 构造函数
#region 函数
///
/// 显示Item属性设置画面
///
///
/// DialogResult.OK:选中的Item有效,设置成功
/// DialogResult.Cancel:选中的Item有效,取消设置
/// DialogResult.None:LayoutBox不是编辑模式,或选中的Item不是一个
///
protected override DialogResult ShowItemPropertyDialogInner()
{
using (GraphicsItemSetting itemPropertySetting = new GraphicsItemSetting())
{
itemPropertySetting.ShapeLocationX = Left;
itemPropertySetting.ShapeLocationY = Top;
itemPropertySetting.ShapeWidth = Width;
itemPropertySetting.ShapeHeight = Height;
itemPropertySetting.LineColor = LineColor;
itemPropertySetting.FillColor = FillColor;
itemPropertySetting.LineWidth = LineWidth;
itemPropertySetting.Transparent = Transparent;
DialogResult result = itemPropertySetting.ShowDialog();
if (result == DialogResult.OK)
{
Left = itemPropertySetting.ShapeLocationX;
Top = itemPropertySetting.ShapeLocationY;
Width = itemPropertySetting.ShapeWidth;
Height = itemPropertySetting.ShapeHeight;
LineColor = itemPropertySetting.LineColor;
FillColor = itemPropertySetting.FillColor;
LineWidth = itemPropertySetting.LineWidth;
Transparent = itemPropertySetting.Transparent;
ResetItemFrame();
SetDrawProperty();
Owner.Dirty = true;
}
return result;
}
}
///
/// 初始化Item图形属性
///
internal override void SetShapeProperty(float zoom)
{
if (_shape != null)
{
if (_lineWidthDraw > 0)
{
_shape.BorderStyle = System.Drawing.Drawing2D.DashStyle.Solid;
_shape.BorderColor = _lineColor;
_shape.BorderWidth = LayoutCommon.MillimeterToPixel(_lineWidthDraw);
}
else
{
_shape.BorderStyle = System.Drawing.Drawing2D.DashStyle.Custom;
_shape.BorderWidth = 1;
}
if (_simpleShape != null)
{
_simpleShape.FillStyle = (_isTransparent) ? FillStyle.Transparent : FillStyle.Solid;
_simpleShape.FillColor = _fillColor;
}
}
}
///
/// 初始化Item绘制用属性
///
internal override float SetDrawProperty()
{
float zoom = base.SetDrawProperty();
_lineWidthDraw = _lineWidth * zoom;
SetShapeProperty(zoom);
return zoom;
}
#endregion 函数
}
}