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 函数 } }