protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); if (BorderRound > 0) { e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; } DrawBorderAndFill(e.Graphics); bool disabledImage = false; Image image = mImage; if (Enabled == false) { if (mDisabledImage != null) { image = mDisabledImage; } else { disabledImage = true; } } else if (mIsMouseOver && mMouseOverImage != null) { image = mMouseOverImage; } Rectangle contentRect = ClientRectangle; if (BorderWidth > 0) { contentRect = new Rectangle(contentRect.X + BorderWidth, contentRect.Y + BorderWidth, contentRect.Width - BorderWidth * 2, contentRect.Height - BorderWidth * 2); } DevAge.Drawing.VisualElements.Container container = new DevAge.Drawing.VisualElements.Container(); DevAge.Drawing.VisualElements.TextGDI textElement = new DevAge.Drawing.VisualElements.TextGDI(Text); DevAge.Drawing.VisualElements.Image imageElement = new DevAge.Drawing.VisualElements.Image(image); imageElement.AnchorArea = new DevAge.Drawing.AnchorArea(mImageAlignment, mImageStretch); imageElement.Enabled = !disabledImage; textElement.AnchorArea = new DevAge.Drawing.AnchorArea(DevAge.Drawing.Utilities.StringFormatToContentAlignment(mStringFormat), false); textElement.StringFormat = mStringFormat; textElement.Font = Font; textElement.ForeColor = ForeColor; textElement.Enabled = Enabled; container.Elements.Add(imageElement); container.Elements.Add(textElement); using (DevAge.Drawing.GraphicsCache cache = new DevAge.Drawing.GraphicsCache(e.Graphics, e.ClipRectangle)) { container.Draw(cache, contentRect); } }
/// <summary> /// Apply to the VisualElement specified the Image properties of the current View. /// Derived class can call this method to apply the settings to custom VisualElement. /// </summary> /// <param name="elementImage"></param> protected virtual void PrepareVisualElementText(CellContext context, DevAge.Drawing.VisualElements.IText element) { if (element is DevAge.Drawing.VisualElements.TextRenderer) { DevAge.Drawing.VisualElements.TextRenderer elementText = (DevAge.Drawing.VisualElements.TextRenderer)element; elementText.Font = GetDrawingFont(context.Grid); elementText.ForeColor = ForeColor; elementText.TextFormatFlags = TextFormatFlags.Default; if (WordWrap) { elementText.TextFormatFlags |= TextFormatFlags.WordBreak; } if (TrimmingMode == TrimmingMode.Char) { elementText.TextFormatFlags |= TextFormatFlags.EndEllipsis; } else if (TrimmingMode == TrimmingMode.Word) { elementText.TextFormatFlags |= TextFormatFlags.WordEllipsis; } elementText.TextFormatFlags |= DevAge.Windows.Forms.Utilities.ContentAligmentToTextFormatFlags(TextAlignment); } else if (element is DevAge.Drawing.VisualElements.TextGDI) { DevAge.Drawing.VisualElements.TextGDI elementTextGDI = (DevAge.Drawing.VisualElements.TextGDI)element; elementTextGDI.Font = GetDrawingFont(context.Grid); elementTextGDI.ForeColor = ForeColor; if (WordWrap) { elementTextGDI.StringFormat.FormatFlags = (StringFormatFlags)0; } else { elementTextGDI.StringFormat.FormatFlags = StringFormatFlags.NoWrap; } if (TrimmingMode == TrimmingMode.Char) { elementTextGDI.StringFormat.Trimming = StringTrimming.Character; } else if (TrimmingMode == TrimmingMode.Word) { elementTextGDI.StringFormat.Trimming = StringTrimming.Word; } else { elementTextGDI.StringFormat.Trimming = StringTrimming.None; } elementTextGDI.Alignment = TextAlignment; } //I have already set the TextFormatFlags for the alignment so the Anchor is not necessary. I have removed this code for performance reasons. //element.AnchorArea = new DevAge.Drawing.AnchorArea(TextAlignment, false); element.Value = context.GetDisplayText(); }
/// <summary> /// Apply to the VisualElement specified the Image properties of the current View. /// Derived class can call this method to apply the settings to custom VisualElement. /// </summary> protected virtual void PrepareVisualElementText(CellContext context) { if (ElementText is DevAge.Drawing.VisualElements.TextRenderer) { DevAge.Drawing.VisualElements.TextRenderer elementText = (DevAge.Drawing.VisualElements.TextRenderer)ElementText; elementText.TextFormatFlags = TextFormatFlags.Default | TextFormatFlags.NoPrefix; if (WordWrap) { elementText.TextFormatFlags |= TextFormatFlags.WordBreak; } if (TrimmingMode == TrimmingMode.Char) { elementText.TextFormatFlags |= TextFormatFlags.EndEllipsis; } else if (TrimmingMode == TrimmingMode.Word) { elementText.TextFormatFlags |= TextFormatFlags.WordEllipsis; } elementText.TextFormatFlags |= DevAge.Windows.Forms.Utilities.ContentAligmentToTextFormatFlags(TextAlignment); } else if (ElementText is DevAge.Drawing.VisualElements.TextGDI) { DevAge.Drawing.VisualElements.TextGDI elementTextGDI = (DevAge.Drawing.VisualElements.TextGDI)ElementText; /*[email protected]: any formatflags set explicitly using ElementText * will be of no use if it is simply reassigned when wordwrap is set to true*/ //if (WordWrap) // elementTextGDI.StringFormat.FormatFlags = (StringFormatFlags)0; if (!WordWrap) { elementTextGDI.StringFormat.FormatFlags |= StringFormatFlags.NoWrap; } if (TrimmingMode == TrimmingMode.Char) { elementTextGDI.StringFormat.Trimming = StringTrimming.EllipsisCharacter; } else if (TrimmingMode == TrimmingMode.Word) { elementTextGDI.StringFormat.Trimming = StringTrimming.EllipsisWord; } else { elementTextGDI.StringFormat.Trimming = StringTrimming.None; } elementTextGDI.Alignment = TextAlignment; } ElementText.Font = GetDrawingFont(context.Grid); ElementText.ForeColor = ForeColor; //I have already set the TextFormatFlags for the alignment so the Anchor is not necessary. I have removed this code for performance reasons. //element.AnchorArea = new DevAge.Drawing.AnchorArea(TextAlignment, false); ElementText.Value = context.DisplayText; }
private void Test_TextGDI(Graphics gr) { DevAge.Drawing.VisualElements.TextGDI text = new DevAge.Drawing.VisualElements.TextGDI("Test text performance"); using (DevAge.Drawing.GraphicsCache cache = new DevAge.Drawing.GraphicsCache(gr)) { for (int i = 0; i < 1000; i++) { text.Draw(cache, panelDraw.ClientRectangle); } } }
private void Test_TextGDI(Graphics gr) { DevAge.Drawing.VisualElements.TextGDI text = new DevAge.Drawing.VisualElements.TextGDI("Test text performance"); using (DevAge.Drawing.GraphicsCache cache = new DevAge.Drawing.GraphicsCache(gr)) { for (int i = 0; i < 1000; i++) text.Draw(cache, panelDraw.ClientRectangle); } }
public GDITextView() { ElementText = new DevAge.Drawing.VisualElements.TextGDI(); }
protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); if (BorderRound > 0) e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; DrawBorderAndFill(e.Graphics); bool disabledImage = false; Image image = mImage; if (Enabled == false) { if (mDisabledImage != null) image = mDisabledImage; else disabledImage = true; } else if (mIsMouseOver && mMouseOverImage != null) image = mMouseOverImage; Rectangle contentRect = ClientRectangle; if (BorderWidth > 0) contentRect = new Rectangle(contentRect.X + BorderWidth, contentRect.Y + BorderWidth, contentRect.Width - BorderWidth * 2, contentRect.Height - BorderWidth * 2); DevAge.Drawing.VisualElements.Container container = new DevAge.Drawing.VisualElements.Container(); DevAge.Drawing.VisualElements.TextGDI textElement = new DevAge.Drawing.VisualElements.TextGDI(Text); DevAge.Drawing.VisualElements.Image imageElement = new DevAge.Drawing.VisualElements.Image(image); imageElement.AnchorArea = new DevAge.Drawing.AnchorArea(mImageAlignment, mImageStretch); imageElement.Enabled = !disabledImage; textElement.AnchorArea = new DevAge.Drawing.AnchorArea(DevAge.Drawing.Utilities.StringFormatToContentAlignment(mStringFormat), false); textElement.StringFormat = mStringFormat; textElement.Font = Font; textElement.ForeColor = ForeColor; textElement.Enabled = Enabled; container.Elements.Add(imageElement); container.Elements.Add(textElement); using (DevAge.Drawing.GraphicsCache cache = new DevAge.Drawing.GraphicsCache(e.Graphics, e.ClipRectangle)) { container.Draw(cache, contentRect); } }