Property Painter
Painter
Represents an object that implements IPainter
interface used to draw control's text.
[Browsable(false)]
public virtual IPainter Painter { get; }
Property Value
Examples
Here is how to use a Painter in the C# code:
public partial class Form1 : Form
{
private Alternet.Syntax.Parsers.Roslyn.CsParser csParser1 = new Alternet.Syntax.Parsers.Roslyn.CsParser();
private void Form1_Load(object sender, EventArgs e)
{
var syntaxEdit1 = new Alternet.Editor.SyntaxEdit(this.components);
syntaxEdit1.CustomDraw += SyntaxEdit1_CustomDraw;
syntaxEdit1.Outlining.AllowOutlining = true;
}
private void SyntaxEdit1_CustomDraw(object sender, Alternet.Editor.CustomDrawEventArgs e)
{
if ((csParser1.Repository == null) || csParser1.Repository.Document == null)
return;
var text = this.csParser1.Repository.Document.GetTextAsync().Result;
if (text == null)
return;
// drawing all identifier with different color
if ((e.DrawStage == Alternet.Editor.DrawStage.Before) && (((e.DrawState & Alternet.Editor.DrawState.Text) != 0) && (e.DrawState & Alternet.Editor.DrawState.Selection) == 0))
{
Alternet.Syntax.Lexer.LexToken tok = (Alternet.Syntax.Lexer.LexToken)(e.DrawInfo.Style.Data - 1);
if (tok == Alternet.Syntax.Lexer.LexToken.Identifier)
e.Painter.TextColor = System.Drawing.Color.Magenta;
}
//fill button gradient
if ((e.DrawStage == Alternet.Editor.DrawStage.Before) && (Alternet.Editor.DrawState.OutlineImage & e.DrawState) != 0)
{
var r = e.Rect;
r.X++;
r.Y++;
r.Width--;
r.Height--;
e.Painter.FillGradient(r.X, r.Y, r.Width, r.Height, System.Drawing.Color.Blue, System.Drawing.Color.White, e.Rect.Location, new System.Drawing.Point(r.Right, r.Bottom));
e.Painter.ExcludeClipRect(e.Rect);
}
}
}
Here is how to use a Painter in the Visual Basic code:
Partial Public Class Form1
Inherits Form
Private csParser1 As Alternet.Syntax.Parsers.Roslyn.CsParser = New Alternet.Syntax.Parsers.Roslyn.CsParser()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim syntaxEdit1 = New Alternet.Editor.SyntaxEdit(Me.components)
AddHandler syntaxEdit1.CustomDraw, New Alternet.Editor.CustomDrawEvent(AddressOf SyntaxEdit1_CustomDraw)
syntaxEdit1.Outlining.AllowOutlining = True
End Sub
Private Sub SyntaxEdit1_CustomDraw(ByVal sender As Object, ByVal e As Alternet.Editor.CustomDrawEventArgs)
If (csParser1.Repository Is Nothing) OrElse csParser1.Repository.Document Is Nothing Then Return
Dim text = Me.csParser1.Repository.Document.GetTextAsync().Result
If text Is Nothing Then Return
If (e.DrawStage = Alternet.Editor.DrawStage.Before) AndAlso (((e.DrawState And Alternet.Editor.DrawState.Text) <> 0) AndAlso (e.DrawState And Alternet.Editor.DrawState.Selection) = 0) Then
Dim tok As Alternet.Syntax.Lexer.LexToken = CType((e.DrawInfo.Style.Data - 1), Alternet.Syntax.Lexer.LexToken)
If tok = Alternet.Syntax.Lexer.LexToken.Identifier Then e.Painter.TextColor = System.Drawing.Color.Magenta
End If
If (e.DrawStage = Alternet.Editor.DrawStage.Before) AndAlso (Alternet.Editor.DrawState.OutlineImage And e.DrawState) <> 0 Then
Dim r = e.Rect
r.X += 1
r.Y += 1
r.Width -= 1
r.Height -= 1
e.Painter.FillGradient(r.X, r.Y, r.Width, r.Height, System.Drawing.Color.Blue, System.Drawing.Color.White, e.Rect.Location, New System.Drawing.Point(r.Right, r.Bottom))
e.Painter.ExcludeClipRect(e.Rect)
End If
End Sub
End Class
Remarks
SyntaxEdit control uses GDI to draw all graphical primitives, such as text images and geometric shapes. You can use this drawing surface to customize paintings using a custom drawing.