private void SKCanvasView_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { var skImageInfo = e.Info; var skSurface = e.Surface; var skCanvas = skSurface.Canvas; var skCanvasWidth = skImageInfo.Width; var skCanvasHeight = skImageInfo.Height; skCanvas.Clear(); skCanvas.Translate((float)skCanvasWidth / 2, (float)skCanvasHeight / 2); using (SKPaint paintCenter = new SKPaint()) { paintCenter.Style = SKPaintStyle.Fill; paintCenter.Color = SKColors.Black; paintCenter.IsDither = true; skCanvas.DrawCircle(0, 0, skCanvasWidth / 17f, paintCenter); // 45 } SKPaint paintStaticElectronOrbit = new SKPaint { Style = SKPaintStyle.Stroke, IsAntialias = true, StrokeWidth = 5, Color = SKColors.Black, }; Random rand = new Random(); float orbitAngleDegree = 180 / (float)_movingElectronObjects.Count; for (int i = 0; i < _movingElectronObjects.Count; i++) { var arcRectWidth = skCanvasWidth / 2.2f; //350 var arcRectHeight = skCanvasHeight / 11.3f; //100 skCanvas.DrawOval(0, 0, arcRectWidth, arcRectHeight, paintStaticElectronOrbit); SKPaint paintElectron = new SKPaint() { Style = SKPaintStyle.Stroke, Color = SKColors.Black, IsAntialias = true, StrokeCap = SKStrokeCap.Round, StrokeWidth = 15, }; SKRect paintMovingElectronOrbit = new SKRect(); paintMovingElectronOrbit.Size = new SKSize((arcRectWidth * 2), (arcRectHeight * 2)); paintMovingElectronOrbit.Location = new SKPoint(-(arcRectWidth * 2 / 2), -(arcRectHeight * 2 / 2)); float electronDrawStartPoint = 0; var _sweepAngle = 0 * _movingElectronObjects[i].TimeAtPointInOrbit + 360 * (1 - _movingElectronObjects[i].TimeAtPointInOrbit); electronDrawStartPoint = _sweepAngle; float electronDrawSize = 1; // (75 / 100) * 360 SKPath pathMovingElectronOrbit = new SKPath(); pathMovingElectronOrbit.AddArc(paintMovingElectronOrbit, electronDrawStartPoint, electronDrawSize); skCanvas.DrawPath(pathMovingElectronOrbit, paintElectron); if (i == 0 && _movingElectronObjects.Count % 2 == 0) { skCanvas.RotateDegrees((float)orbitAngleDegree); } else { skCanvas.RotateDegrees((float)orbitAngleDegree + 180); } } }
private void BackgroundGradient_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { MyAccount.setGradientWallpaper(e); }
public void AutoPaint(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs args) { this.Image.Draw(args.Surface.Canvas, args.Info.Rect); }
private void Handle_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { _highlightForm.Draw(CanvasView, e.Surface.Canvas); }
private void canvas_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { SKImageInfo info = e.Info; SKSurface surface = e.Surface; SKCanvas canvas = surface.Canvas; SKPaint strokePaint = GetPaintColor(SKPaintStyle.Stroke, null, 10, SKStrokeCap.Square); SKPaint dotPaint = GetPaintColor(SKPaintStyle.Fill, "#DE0469"); SKPaint hrPaint = GetPaintColor(SKPaintStyle.Stroke, "#262626", 4, SKStrokeCap.Square); SKPaint minPaint = GetPaintColor(SKPaintStyle.Stroke, "#DE0469", 2, SKStrokeCap.Square); SKPaint bgPaint = GetPaintColor(SKPaintStyle.Fill, "#FFFFFF"); canvas.Clear(); SKRect arcRect = new SKRect(10, 10, info.Width - 10, info.Height - 10); SKRect bgRect = new SKRect(25, 25, info.Width - 25, info.Height - 25); canvas.DrawOval(bgRect, bgPaint); strokePaint.Shader = SKShader.CreateLinearGradient( new SKPoint(arcRect.Left, arcRect.Top), new SKPoint(arcRect.Right, arcRect.Bottom), new SKColor[] { SKColor.Parse("#DE0469"), SKColors.Transparent }, new float[] { 0, 1 }, SKShaderTileMode.Repeat); path.ArcTo(arcRect, 45, arcLength, true); canvas.DrawPath(path, strokePaint); canvas.Translate(info.Width / 2, info.Height / 2); canvas.Scale(info.Width / 200f); canvas.Save(); canvas.RotateDegrees(240); canvas.DrawCircle(0, -75, 2, dotPaint); canvas.Restore(); DateTime dateTime = DateTime.Now; //Draw hour hand canvas.Save(); canvas.RotateDegrees(30 * dateTime.Hour + dateTime.Minute / 2f); canvas.DrawLine(0, 5, 0, -60, hrPaint); canvas.Restore(); //Draw minute hand canvas.Save(); canvas.RotateDegrees(6 * dateTime.Minute + dateTime.Second / 10f); canvas.DrawLine(0, 10, 0, -90, minPaint); canvas.Restore(); canvas.DrawCircle(0, 0, 5, dotPaint); secondsTxt.Text = dateTime.Second.ToString("00"); timeTxt.Text = dateTime.ToString("hh:mm"); periodTxt.Text = dateTime.Hour >= 12 ? "PM" : "AM"; var alarmDiff = alarmDate - dateTime; alarmTxt.Text = $"{alarmDiff.Hours}h {alarmDiff.Minutes}m until next alarm"; }
private void CanvasView_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { e.Surface.Canvas.Clear(SKColors.Blue); Sketch.SkiaManager.OnPaintSurface(e.Surface.Canvas); }
private void FolderCanvas_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { SKImageInfo info = e.Info; SKSurface surface = e.Surface; SKCanvas canvas = surface.Canvas; canvas.Clear(); float scaleFactor = 0.67f; float density = scaleFactor * info.Size.Height / (float)this.Height; canvas.Save(); using (SKPath backPath = SKPath.ParseSvgPathData( "M87.909,9.917V4.02A4.032,4.032,0,0,0,83.889,0H23.72A4.032,4.032,0,0,0,19.7,4.02v5.9H13.338a4.529,4.529,0,0,0-3.822,4.02l.27,112.7a3.954,3.954,0,0,0,3.951,4.024H167.344a3.963,3.963,0,0,0,3.97-4.011l-.6-112.71a4.092,4.092,0,0,0-4.07-4.02Z")) { backPath.Transform(SKMatrix.MakeScale(density, density)); backPath.GetTightBounds(out var backPathTightBounds); var translateXBackPath = info.Width * 0.5f - backPathTightBounds.MidX; var translateYbackPath = info.Height - backPathTightBounds.Bottom - 20f; canvas.Translate(translateXBackPath, translateYbackPath); fillPaint.Shader = SKShader.CreateLinearGradient( new SKPoint(info.Width * 0.5f, 0), new SKPoint(info.Width * 0.5f, info.Height), new SKColor[] { SKColor.Parse(Color1), SKColor.Parse(Color2), SKColor.Parse(Color2) }, new float[] { 0, 0.37f, 1 }, SKShaderTileMode.Clamp ); canvas.DrawPath(backPath, fillPaint); } canvas.Restore(); canvas.Save(); using (SKPath backFilePath = SKPath.ParseSvgPathData("M174.079,150.908H29.155l-.4-114.144H174.481Z")) { backFilePath.Transform(SKMatrix.MakeScale(density, density)); backFilePath.GetTightBounds(out var backFilePathTightBounds); var translateXBackFilePath = info.Width * 0.5f - backFilePathTightBounds.MidX; var translateYbackFilePath = info.Height - backFilePathTightBounds.Bottom - 20f; canvas.Translate(translateXBackFilePath, translateYbackFilePath); fillPaint.Shader = SKShader.CreateLinearGradient( new SKPoint(info.Width * 0.5f, 0), new SKPoint(info.Width * 0.5f, info.Height), new SKColor[] { SKColor.Parse("#e6e6e6"), SKColor.Parse("#e8e8e8"), SKColor.Parse("#f0f0f0"), SKColor.Parse("#f2f2f2") }, new float[] { 0, 0.633f, 0.949f, 1 }, SKShaderTileMode.Clamp ); canvas.DrawPath(backFilePath, fillPaint); } canvas.Restore(); canvas.Save(); using (SKPath frontFilePath = SKPath.ParseSvgPathData("M170.491,158.681H25.567L22.753,49.764H173.3Z")) { frontFilePath.Transform(SKMatrix.MakeScale(density, density)); frontFilePath.GetTightBounds(out var frontFilePathTightBounds); var translateXFrontFilePath = info.Width * 0.5f - frontFilePathTightBounds.MidX; var translateYFrontFilePath = info.Height - frontFilePathTightBounds.Bottom - 20f; canvas.Translate(translateXFrontFilePath, translateYFrontFilePath); fillPaint.Shader = SKShader.CreateLinearGradient( new SKPoint(info.Width * 0.5f, 0), new SKPoint(info.Width * 0.5f, info.Height), new SKColor[] { SKColor.Parse("#cccccc"), SKColor.Parse("#cecece"), SKColor.Parse("#d6d6d6"), SKColor.Parse("#e3e3e3"), SKColor.Parse("#f6f6f6"), SKColor.Parse("#ffffff") }, new float[] { 0, 0.427f, 0.64f, 0.806f, 0.947f, 1 }, SKShaderTileMode.Clamp ); canvas.DrawPath(frontFilePath, fillPaint); } canvas.Restore(); canvas.Save(); using (SKPath frontPath = SKPath.ParseSvgPathData("M165.433,164.917a4.106,4.106,0,0,1-4.089,4.011H7.735a4.578,4.578,0,0,1-4.325-4.292L0,68.019A3.948,3.948,0,0,1,3.95,64H164.895a3.948,3.948,0,0,1,3.95,4.02Z")) { frontPath.Transform(SKMatrix.MakeScale(density, density)); frontPath.GetTightBounds(out var frontPathTightBounds); fillPaint.Shader = SKShader.CreateLinearGradient( new SKPoint(info.Width * 0.5f, 0), new SKPoint(info.Width * 0.5f, info.Height), new SKColor[] { SKColor.Parse(Color3), SKColor.Parse(Color4), SKColor.Parse(Color5), SKColor.Parse(Color6) }, new float[] { 0, 0.595f, 0.957f, 1 }, SKShaderTileMode.Clamp ); SKMatrix matrix = SKMatrix.MakeTranslation(-frontPathTightBounds.Right, -frontPathTightBounds.Bottom); SKMatrix44 matrix44 = SKMatrix44.CreateIdentity(); matrix44.PostConcat(SKMatrix44.CreateRotationDegrees(1, 0, 0, -FrontPathDegree)); matrix44.PostConcat(SKMatrix44.CreateRotationDegrees(0, 1, 0, -0.5f * FrontPathDegree)); matrix44.PostConcat(SKMatrix44.CreateRotationDegrees(0, 0, 1, 0)); SKMatrix.PostConcat(ref matrix, matrix44.Matrix); SKMatrix.PostConcat(ref matrix, SKMatrix.MakeTranslation(frontPathTightBounds.Right, frontPathTightBounds.Bottom)); canvas.SetMatrix(matrix); var translateXFrontPath = info.Width * 0.5f - frontPathTightBounds.MidX; var translateYFrontPath = info.Height - frontPathTightBounds.Bottom - 20f; canvas.Translate(translateXFrontPath, translateYFrontPath); canvas.DrawPath(frontPath, fillPaint); } canvas.Restore(); }