Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

CustomMark Interface

Represents a custom mark in the document.

Namespace: DevExpress.XtraRichEdit.API.Native

Assembly: DevExpress.RichEdit.v24.2.Core.dll

NuGet Package: DevExpress.RichEdit.Core

#Declaration

[ComVisible(true)]
public interface CustomMark

#Remarks

A custom mark enables you to draw attention to a position in a document. A visual element can be painted at the position associated with a custom mark. Custom marks are not saved when a document is exported to any format.

Use the CustomMarkCollection.Create method to create a mark and add it to the SubDocument.CustomMarks collection. Subsequently you can visualize it by handling the CustomMark event.

Custommark

This code snippet illustrates the use of the CustomMarkCollection.Create method and the RichEditControl.CustomMarkDraw event, to add a mark to the selection and draw its visual representation.

using DevExpress.XtraRichEdit.API.Native;
using DevExpress.XtraRichEdit.Layout.Export;
using System.Drawing.Drawing2D;
        private void btn_Mark_Click(object sender, EventArgs e)
        {
            Document doc = richEditControl1.Document;
            CustomMark m = doc.CustomMarks.Create(doc.Selection.Start, Color.DarkOrange);   
        }

        private void richEditControl1_CustomMarkDraw(object sender, DevExpress.XtraRichEdit.RichEditCustomMarkDrawEventArgs e)
        {        
            foreach (CustomMarkVisualInfo info in e.VisualInfoCollection)
            {
                Document doc = richEditControl1.Document;
                CustomMark mark = doc.CustomMarks.GetByVisualInfo(info);
                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

                Color curColor = (Color)info.UserData;
                if (mark.Position < doc.Selection.Start) curColor = Color.Green;
                    Pen p = new Pen(curColor, 3);
                    p.StartCap = LineCap.Flat;
                    p.EndCap = LineCap.ArrowAnchor;
                    e.Graphics.DrawLine(p, new Point(0 , info.Bounds.Y), info.Bounds.Location);
            }
        }
See Also