private void DoDeItemPaintBKG(object sender, HCCanvas aCanvas, RECT aDrawRect, PaintInfo aPaintInfo) { if (!aPaintInfo.Print) { DeItem vDeItem = sender as DeItem; if (vDeItem.IsElement) { if (vDeItem.MouseIn || vDeItem.Active) { if (vDeItem.IsSelectPart || vDeItem.IsSelectComplate) { } else { if (vDeItem[DeProp.Name] != vDeItem.Text) { aCanvas.Brush.Color = FDeDoneColor; } else // 没填写过 { aCanvas.Brush.Color = FDeUnDoneColor; } aCanvas.FillRect(aDrawRect); } } } else // 不是数据元 if (FDesignMode && vDeItem.EditProtect) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { base.DoPaint(aStyle, aDrawRect, aDataDrawTop, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); if (FOnPaintBKG != null) { FOnPaintBKG(this, aCanvas, aDrawRect, aPaintInfo); } }
public override void PaintTop(HCCanvas aCanvas) { aCanvas.Pen.Width = 1; //int vH = this.OwnerData.Style.LineSpaceMin / 2; int vH = (FDrawRect.Height - this.OwnerData.Style.TextStyles[FTextStyleNo].FontHeight) / 2; if (this.MarkType == HC.View.MarkType.cmtBeg) { aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Width = 1; aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.FromArgb(0, 0, 255); } finally { aCanvas.Pen.EndUpdate(); } aCanvas.MoveTo(FDrawRect.Left + 2, FDrawRect.Top + vH); aCanvas.LineTo(FDrawRect.Left, FDrawRect.Top + vH); aCanvas.LineTo(FDrawRect.Left, FDrawRect.Bottom - vH); aCanvas.LineTo(FDrawRect.Left + 2, FDrawRect.Bottom - vH); } else { aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Width = 1; aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.FromArgb(0, 0, 255); } finally { aCanvas.Pen.EndUpdate(); } aCanvas.MoveTo(FDrawRect.Right - 2, FDrawRect.Top + vH); aCanvas.LineTo(FDrawRect.Right, FDrawRect.Top + vH); aCanvas.LineTo(FDrawRect.Right, FDrawRect.Bottom - vH); aCanvas.LineTo(FDrawRect.Right - 2, FDrawRect.Bottom - vH); } }
/// <summary> 节整页绘制前事件 </summary> private void DoPaintPaperBefor(object sender, int aPageIndex, RECT aRect, HCCanvas aCanvas, SectionPaintInfo aPaintInfo) { if ((!aPaintInfo.Print) && (sender as HCSection).ReadOnly) { aCanvas.Font.BeginUpdate(); try { aCanvas.Font.Size = 48; aCanvas.Font.Color = Color.Gray; aCanvas.Font.Family = "隶书"; } finally { aCanvas.Font.EndUpdate(); } aCanvas.TextOut(aRect.Left + 10, aRect.Top + 10, "只读"); } }
protected override void DoDrawItemPaintBefor(HCCustomData aData, int aItemNo, int aDrawItemNo, RECT aDrawRect, RECT aClearRect, int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if ((!aPaintInfo.Print) && (aData.Items[aItemNo] is DeItem)) { DeItem vDeItem = aData.Items[aItemNo] as DeItem; if (vDeItem.IsElement) // 是数据元 { if ((vDeItem.MouseIn) || (vDeItem.Active)) // 鼠标移入和光标 { if ((vDeItem.IsSelectPart) || (vDeItem.IsSelectComplate)) { } else { if (vDeItem[DeProp.Name] != vDeItem.Text) // 已经填写过了 { aCanvas.Brush.Color = FDeDoneColor; } else // 没填写过 { aCanvas.Brush.Color = FDeUnDoneColor; } aCanvas.FillRect(aDrawRect); } } } else // 不是数据元 { if (FDesignMode && vDeItem.EditProtect) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } } } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if (this.Active && (!aPaintInfo.Print)) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } aStyle.TextStyles[TextStyleNo].ApplyStyle(aCanvas, aPaintInfo.ScaleY / aPaintInfo.Zoom); if (FLeftTopText != "") { aCanvas.TextOut(aDrawRect.Left + FLeftTopRect.Left, aDrawRect.Top + FLeftTopRect.Top, FLeftTopText); } if (FLeftBottomText != "") { aCanvas.TextOut(aDrawRect.Left + FLeftBottomRect.Left, aDrawRect.Top + FLeftBottomRect.Top, FLeftBottomText); } if (FRightTopText != "") { aCanvas.TextOut(aDrawRect.Left + FRightTopRect.Left, aDrawRect.Top + FRightTopRect.Top, FRightTopText); } if (FRightBottomText != "") { aCanvas.TextOut(aDrawRect.Left + FRightBottomRect.Left, aDrawRect.Top + FRightBottomRect.Top, FRightBottomText); } // 十字线 aCanvas.Pen.Color = Color.Black; aCanvas.MoveTo(aDrawRect.Left, aDrawRect.Top + FLeftTopRect.Bottom + FPadding); aCanvas.LineTo(aDrawRect.Right, aDrawRect.Top + FLeftTopRect.Bottom + FPadding); aCanvas.MoveTo(aDrawRect.Left + FLeftTopRect.Right + FPadding, aDrawRect.Top); aCanvas.LineTo(aDrawRect.Left + FLeftTopRect.Right + FPadding, aDrawRect.Bottom); if (!aPaintInfo.Print) { RECT vFocusRect = new RECT(); if (FActiveArea != ToothArea.ctaNone) { switch (FActiveArea) { case ToothArea.ctaLeftTop: vFocusRect = FLeftTopRect; break; case ToothArea.ctaLeftBottom: vFocusRect = FLeftBottomRect; break; case ToothArea.ctaRightTop: vFocusRect = FRightTopRect; break; case ToothArea.ctaRightBottom: vFocusRect = FRightBottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.Gray; aCanvas.Rectangle(vFocusRect); } if ((FMouseMoveArea != ToothArea.ctaNone) && (FMouseMoveArea != FActiveArea)) { switch (FMouseMoveArea) { case ToothArea.ctaLeftTop: vFocusRect = FLeftTopRect; break; case ToothArea.ctaLeftBottom: vFocusRect = FLeftBottomRect; break; case ToothArea.ctaRightTop: vFocusRect = FRightTopRect; break; case ToothArea.ctaRightBottom: vFocusRect = FRightBottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.LightGray; aCanvas.Rectangle(vFocusRect); } } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { base.DoPaint(aStyle, aDrawRect, aDataDrawTop, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); if ((this.Empty) && this.Active && (!aPaintInfo.Print)) // 非打印状态下的空白图片 { aCanvas.Font.Size = 12; aCanvas.Font.FontStyles.InClude((byte)HCFontStyle.tsItalic); aCanvas.TextOut(aDrawRect.Left + 2, aDrawRect.Top + 2, "DeIndex:" + this[DeProp.Index]); } }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { base.DoPaint(aStyle, aDrawRect, aDataDrawTop, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); if (FOnPaintBKG != null) { FOnPaintBKG(this, aCanvas, aDrawRect, aPaintInfo); } if (FStyleEx == StyleExtra.cseDel) { int vTextHeight = aStyle.TextStyles[this.StyleNo].FontHeight; int vAlignVert = User.DT_BOTTOM; switch (aStyle.ParaStyles[this.ParaNo].AlignVert) { case ParaAlignVert.pavCenter: vAlignVert = User.DT_CENTER; break; case ParaAlignVert.pavTop: vAlignVert = User.DT_TOP; break; default: vAlignVert = User.DT_BOTTOM; break; } int vTop = aDrawRect.Top; switch (vAlignVert) { case User.DT_TOP: vTop = aDrawRect.Top; break; case User.DT_CENTER: vTop = aDrawRect.Top + (aDrawRect.Bottom - aDrawRect.Top - vTextHeight) / 2; break; default: vTop = aDrawRect.Bottom - vTextHeight; break; } // 绘制删除线 aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Red; } finally { aCanvas.Pen.EndUpdate(); } vTop = vTop + (aDrawRect.Bottom - vTop) / 2; aCanvas.MoveTo(aDrawRect.Left, vTop - 1); aCanvas.LineTo(aDrawRect.Right, vTop - 1); aCanvas.MoveTo(aDrawRect.Left, vTop + 2); aCanvas.LineTo(aDrawRect.Right, vTop + 2); } else if (FStyleEx == StyleExtra.cseAdd) { aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Blue; } finally { aCanvas.Pen.EndUpdate(); } aCanvas.MoveTo(aDrawRect.Left, aDrawRect.Bottom); aCanvas.LineTo(aDrawRect.Right, aDrawRect.Bottom); } }
/// <summary> 文档某节的Item绘制完成 </summary> /// <param name="AData">当前绘制的Data</param> /// <param name="ADrawItemIndex">Item对应的DrawItem序号</param> /// <param name="ADrawRect">Item对应的绘制区域</param> /// <param name="ADataDrawLeft">Data绘制时的Left</param> /// <param name="ADataDrawBottom">Data绘制时的Bottom</param> /// <param name="ADataScreenTop">绘制时呈现Data的Top位置</param> /// <param name="ADataScreenBottom">绘制时呈现Data的Bottom位置</param> /// <param name="ACanvas">画布</param> /// <param name="APaintInfo">绘制时的其它信息</param> protected override void DoSectionDrawItemPaintAfter(Object sender, HCCustomData aData, int aItemNo, int aDrawItemNo, RECT aDrawRect, int aDataDrawLeft, int aDataDrawRight, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if ((!FHideTrace) && (FTraceCount > 0)) // 显示痕迹且有痕迹 { HCCustomItem vItem = aData.Items[aItemNo]; if (vItem.StyleNo > HCStyle.Null) { DeItem vDeItem = vItem as DeItem; if (vDeItem.StyleEx != StyleExtra.cseNone) // 添加批注 { HCDrawAnnotateDynamic vDrawAnnotate = new HCDrawAnnotateDynamic(); vDrawAnnotate.DrawRect = aDrawRect; vDrawAnnotate.Title = vDeItem.GetHint(); vDrawAnnotate.Text = aData.GetDrawItemText(aDrawItemNo); this.AnnotatePre.AddDrawAnnotate(vDrawAnnotate); } } } if ((FPageBlankTip != "") && (aData is HCPageData)) { if (aDrawItemNo < aData.DrawItems.Count - 1) { if (aData.Items[aData.DrawItems[aDrawItemNo + 1].ItemNo].PageBreak) { DrawBlankTip_(aDataDrawLeft, aDrawRect.Top + aDrawRect.Height + aData.GetLineBlankSpace(aDrawItemNo), aDataDrawRight, aDataDrawBottom, aCanvas); } } else { DrawBlankTip_(aDataDrawLeft, aDrawRect.Top + aDrawRect.Height + aData.GetLineBlankSpace(aDrawItemNo), aDataDrawRight, aDataDrawBottom, aCanvas); } } base.DoSectionDrawItemPaintAfter(sender, aData, aItemNo, aDrawItemNo, aDrawRect, aDataDrawLeft, aDataDrawRight, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); }
private void DrawBlankTip_(int aLeft, int aTop, int aRight, int aDataDrawBottom, HCCanvas aCanvas) { if (aTop + 14 <= aDataDrawBottom) { aCanvas.Font.Size = 12; aCanvas.TextOut(aLeft + ((aRight - aLeft) - aCanvas.TextWidth(FPageBlankTip)) / 2, aTop, FPageBlankTip); } }
private void DoDeItemPaintBKG(object sender, HCCanvas aCanvas, RECT aDrawRect, PaintInfo aPaintInfo) { if (aPaintInfo.Print) { return; } DeItem vDeItem = sender as DeItem; if (!vDeItem.Selected()) { if (vDeItem.IsElement) { if (vDeItem.MouseIn || vDeItem.Active) { if (vDeItem.IsSelectPart || vDeItem.IsSelectComplate) { } else { if (vDeItem[DeProp.Name] != vDeItem.Text) { aCanvas.Brush.Color = FDeDoneColor; } else // 没填写过 { aCanvas.Brush.Color = FDeUnDoneColor; } aCanvas.FillRect(aDrawRect); } } else // 不是数据元 if (FDesignMode) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } } else // 不是数据元 if (FDesignMode && vDeItem.EditProtect) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } } if (!FHideTrace) // 显示痕迹 { if (vDeItem.StyleEx == StyleExtra.cseDel) // 痕迹 { int vTextHeight = Style.TextStyles[vDeItem.StyleNo].FontHeight; int vAlignVert = User.DT_BOTTOM; switch (Style.ParaStyles[vDeItem.ParaNo].AlignVert) { case ParaAlignVert.pavCenter: vAlignVert = User.DT_CENTER; break; case ParaAlignVert.pavTop: vAlignVert = User.DT_TOP; break; default: vAlignVert = User.DT_BOTTOM; break; } int vTop = aDrawRect.Top; switch (vAlignVert) { case User.DT_TOP: vTop = aDrawRect.Top; break; case User.DT_CENTER: vTop = aDrawRect.Top + (aDrawRect.Bottom - aDrawRect.Top - vTextHeight) / 2; break; default: vTop = aDrawRect.Bottom - vTextHeight; break; } // 绘制删除线 aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Red; } finally { aCanvas.Pen.EndUpdate(); } vTop = vTop + (aDrawRect.Bottom - vTop) / 2; aCanvas.MoveTo(aDrawRect.Left, vTop - 1); aCanvas.LineTo(aDrawRect.Right, vTop - 1); aCanvas.MoveTo(aDrawRect.Left, vTop + 2); aCanvas.LineTo(aDrawRect.Right, vTop + 2); } else if (vDeItem.StyleEx == StyleExtra.cseAdd) { aCanvas.Pen.BeginUpdate(); try { aCanvas.Pen.Style = HCPenStyle.psSolid; aCanvas.Pen.Color = Color.Blue; } finally { aCanvas.Pen.EndUpdate(); } aCanvas.MoveTo(aDrawRect.Left, aDrawRect.Bottom); aCanvas.LineTo(aDrawRect.Right, aDrawRect.Bottom); } } }
/// <summary> 文档某节的Item绘制完成 </summary> /// <param name="AData">当前绘制的Data</param> /// <param name="ADrawItemIndex">Item对应的DrawItem序号</param> /// <param name="ADrawRect">Item对应的绘制区域</param> /// <param name="ADataDrawLeft">Data绘制时的Left</param> /// <param name="ADataDrawBottom">Data绘制时的Bottom</param> /// <param name="ADataScreenTop">绘制时呈现Data的Top位置</param> /// <param name="ADataScreenBottom">绘制时呈现Data的Bottom位置</param> /// <param name="ACanvas">画布</param> /// <param name="APaintInfo">绘制时的其它信息</param> protected override void DoSectionDrawItemPaintAfter(Object sender, HCCustomData aData, int aDrawItemNo, RECT aDrawRect, int aDataDrawLeft, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if (FTraceCount > 0) // 显示批注 { HCCustomItem vItem = aData.Items[aData.DrawItems[aDrawItemNo].ItemNo]; if (vItem.StyleNo > HCStyle.Null) { DeItem vDeItem = vItem as DeItem; if (vDeItem.StyleEx != StyleExtra.cseNone) // 添加批注 { HCDrawAnnotateDynamic vDrawAnnotate = new HCDrawAnnotateDynamic(); vDrawAnnotate.DrawRect = aDrawRect; vDrawAnnotate.Title = vDeItem.GetHint(); vDrawAnnotate.Text = aData.GetDrawItemText(aDrawItemNo); this.AnnotatePre.AddDrawAnnotate(vDrawAnnotate); } } } base.DoSectionDrawItemPaintAfter(sender, aData, aDrawItemNo, aDrawRect, aDataDrawLeft, aDataDrawBottom, aDataScreenTop, aDataScreenBottom, aCanvas, aPaintInfo); }
protected override void DoPaint(HCStyle aStyle, RECT aDrawRect, int aDataDrawTop, int aDataDrawBottom, int aDataScreenTop, int aDataScreenBottom, HCCanvas aCanvas, PaintInfo aPaintInfo) { if (this.Active && (!aPaintInfo.Print)) { aCanvas.Brush.Color = HC.View.HC.clBtnFace; aCanvas.FillRect(aDrawRect); } aStyle.TextStyles[TextStyleNo].ApplyStyle(aCanvas, aPaintInfo.ScaleY / aPaintInfo.Zoom); aCanvas.TextOut(aDrawRect.Left + LeftRect.Left, aDrawRect.Top + LeftRect.Top, LeftText); aCanvas.TextOut(aDrawRect.Left + TopRect.Left, aDrawRect.Top + TopRect.Top, TopText); aCanvas.TextOut(aDrawRect.Left + RightRect.Left, aDrawRect.Top + RightRect.Top, RightText); aCanvas.TextOut(aDrawRect.Left + BottomRect.Left, aDrawRect.Top + BottomRect.Top, BottomText); aCanvas.Pen.Color = Color.Black; aCanvas.DrawLine(aDrawRect.Left, aDrawRect.Top, aDrawRect.Right, aDrawRect.Bottom); aCanvas.DrawLine(aDrawRect.Right, aDrawRect.Top, aDrawRect.Left, aDrawRect.Bottom); if (!aPaintInfo.Print) { RECT vFocusRect = new RECT(); if (FMouseIn) { aCanvas.Pen.Color = Color.Gray; vFocusRect = LeftRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = TopRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = RightRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); vFocusRect = BottomRect; vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Rectangle(vFocusRect); } if (FActiveArea != ExpressArea.ceaNone) { switch (FActiveArea) { case ExpressArea.ceaLeft: vFocusRect = LeftRect; break; case ExpressArea.ceaTop: vFocusRect = TopRect; break; case ExpressArea.ceaRight: vFocusRect = RightRect; break; default: vFocusRect = BottomRect; break; } vFocusRect.Offset(aDrawRect.Left, aDrawRect.Top); vFocusRect.Inflate(2, 2); aCanvas.Pen.Color = Color.Blue; aCanvas.Rectangle(vFocusRect); } } }