You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
using SkiaSharp;
|
|
using SkiaSharp.Views.Maui;
|
|
|
|
namespace ex_OutlineText;
|
|
|
|
public partial class MainPage : ContentPage
|
|
{
|
|
public MainPage()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void OnPainting(object sender, SKPaintSurfaceEventArgs args)
|
|
{
|
|
SKImageInfo info = args.Info;
|
|
SKSurface surface = args.Surface;
|
|
SKCanvas canvas = surface.Canvas;
|
|
|
|
canvas.Clear();
|
|
|
|
string text = "OUTLINE";
|
|
|
|
// Create an SKPaint object to display the text
|
|
SKPaint textPaint = new SKPaint
|
|
{
|
|
Style = SKPaintStyle.Stroke,
|
|
StrokeWidth = 1,
|
|
FakeBoldText = true,
|
|
Color = SKColors.Blue
|
|
};
|
|
|
|
// Adjust TextSize property so text is 95% of screen width
|
|
float textWidth = textPaint.MeasureText(text);
|
|
textPaint.TextSize = 0.95f * info.Width * textPaint.TextSize / textWidth;
|
|
|
|
// Find the text bounds
|
|
SKRect textBounds = new SKRect();
|
|
textPaint.MeasureText(text, ref textBounds);
|
|
|
|
// Calculate offsets to center the text on the screen
|
|
float xText = info.Width / 2 - textBounds.MidX;
|
|
float yText = info.Height / 2 - textBounds.MidY;
|
|
|
|
// And draw the text
|
|
canvas.DrawText(text, xText, yText, textPaint);
|
|
}
|
|
}
|
|
|