https://github.com/ryancheung/skiatextrenderer
A Winform-liked cross-platform TextRenderer implemented with SkiaSharp
https://github.com/ryancheung/skiatextrenderer
skia skiasharp textrenderer wordbreak
Last synced: 10 months ago
JSON representation
A Winform-liked cross-platform TextRenderer implemented with SkiaSharp
- Host: GitHub
- URL: https://github.com/ryancheung/skiatextrenderer
- Owner: ryancheung
- License: mit
- Created: 2020-01-31T04:06:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-10T01:49:33.000Z (over 6 years ago)
- Last Synced: 2025-08-01T06:03:27.123Z (11 months ago)
- Topics: skia, skiasharp, textrenderer, wordbreak
- Language: C#
- Homepage:
- Size: 133 KB
- Stars: 32
- Watchers: 5
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README

[](https://www.nuget.org/packages/SkiaTextRenderer/)
## A Winform-liked TextRenderer implemented with SkiaSharp
SkiaTextRenderer is a text renderer that simulate the [`System.Windows.Forms.TextRenderer`](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.textrenderer.drawtext?view=netframework-4.8).
Its goal is to provider a cross-platform **TextRenderer** that can be easly used in game or app.
The APIs are just like the Winform version. Even [`TextFormatFlags`](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.textformatflags?view=netframework-4.8) was directly copied and used. Most of the flags are implemented for now, left flags could be implemented later.
### Examples
#### TextFormatFlags.Default

#### TextFormatFlags.HorizontalCenter

#### TextFormatFlags.LeftAndRightPadding

#### TextFormatFlags.NoPadding

#### Italic & TextFormatFlags.Default

#### Underline & TextFormatFlags.Default

#### StrikeThrough & TextFormatFlags.Default

#### Sized & TextFormatFlags.Default

#### Sized & TextFormatFlags.VertialCenter

#### Sized & TextFormatFlags.VertialCenter & TextFormatFlags.WordBreak

#### Sized & TextFormatFlags.HorizontalCenter & TextFormatFlags.VerticalCenter & TextFormatFlags.WordBreak

#### Auto break line with newline character '\n' or '\r' or "\r\n"

### Install
```
nuget install SkiaTextRenderer
```
### Usage
**note `TextRenderer` class is deprecated and will be removed in v2.1.0, please use the new `TextRendererSk` instead.**
```csharp
static void TestDraw(string text, Font font, TextFormatFlags flags)
{
var size = TextRendererSk.MeasureText(text, font, 0, flags);
var BackColour = SKColors.Black;
using (SKBitmap bitmap = new SKBitmap(size.Width, size.Height, SKColorType.Rgba8888, SKAlphaType.Unpremul))
using (var canvas = new SKCanvas(bitmap))
{
canvas.Clear(BackColour);
TextRendererSk.DrawText(canvas, text, font, new Rectangle(0, 0, size.Width, size.Height), SKColors.White, flags);
using (Stream s = File.Open(fileName, FileMode.Create))
{
SKData d = SKImage.FromBitmap(bitmap).Encode(SKEncodedImageFormat.Png, 100);
d.SaveTo(s);
}
}
}
```
### TODO
- Implement `TextFormatFlags.WordEllipsis`
- Support long text drawing with offset defined by cursor position