Example #1
0
        private void OnPaintCanvas(object sender, SKPaintSurfaceEventArgs e)
        {
            SKImageInfo info    = e.Info;
            SKSurface   surface = e.Surface;
            SKCanvas    canvas  = surface.Canvas;

            int     surfaceWidth  = info.Width;
            int     surfaceHeight = info.Height;
            SKPoint surfaceSize   = new SKPoint(surfaceWidth, surfaceHeight);



            //絵画開始
            //背景色を塗る
            canvas.Clear(PaintColors.DefaultBackground);
            SKBitmap bitmap = PaintPatterns.CheckeredPattern(PaintColors.Black);


            //pathList絵画
            foreach (var aPath in pathList)
            {
                if (!aPath.IsVisibility)
                {
                    continue;
                }

                if (aPath.Points.Count >= 2)
                {
                    canvas.DrawPath(aPath.ToSKPath(), aPath.FillPaint);
                    canvas.DrawPath(aPath.ToSKPath(), aPath.StrokePaint);
                }
                else if (aPath.Points.Count == 1)
                {
                    canvas.DrawPoint(aPath.GetFirst(), aPath.StrokePaint);
                }
            }


            //最前面
            //Lasso色で暫定Pathを絵画
            if (!inProgressPath.IsEmpty())
            {
                if (inProgressPath.Points.Count >= 2)
                {
                    canvas.DrawPath(inProgressPath.ToSKPath(), inProgressPath.FillPaint);
                    canvas.DrawPath(inProgressPath.ToSKPath(), inProgressPath.StrokePaint);
                }
                else if (inProgressPath.Points.Count == 1)
                {
                    canvas.DrawPoint(inProgressPath.GetFirst(), inProgressPath.StrokePaint);
                }
            }
        }
Example #2
0
        private void PenTipChanged()
        {
            //ペン先のstrokeカラー設定
            SKColor strokeColor = PaintColors.Transparent;

            switch (strokeColorPicker.SelectedItem as string)
            {
            default:
            case "None":
                strokeColor = PaintColors.Transparent;
                break;

            case "Black":
                strokeColor = PaintColors.Black;
                break;

            case "White":
                strokeColor = PaintColors.White;
                break;

            case "Red":
                strokeColor = PaintColors.Red;
                break;

            case "Yellow":
                strokeColor = PaintColors.Yellow;
                break;

            case "Green":
                strokeColor = PaintColors.Green;
                break;

            case "Blue":
                strokeColor = PaintColors.Blue;
                break;
            }

            SKPaint strokePaint = new SKPaint
            {
                IsAntialias = false,
                Style       = SKPaintStyle.Stroke,
                Color       = strokeColor,
                StrokeWidth = (float)strokeSizeStepper.Value,
                StrokeJoin  = SKStrokeJoin.Round
            };

            inProgressPath.StrokePaint = strokePaint;



            //ペン先のfillカラー設定
            SKColor fillColor = PaintColors.Transparent;

            switch (fillColorPicker.SelectedItem as string)
            {
            default:
            case "None":
                fillColor = PaintColors.Transparent;
                break;

            case "Black":
                fillColor = PaintColors.Black;
                break;

            case "White":
                fillColor = PaintColors.White;
                break;

            case "Red":
                fillColor = PaintColors.Red;
                break;

            case "Yellow":
                fillColor = PaintColors.Yellow;
                break;

            case "Green":
                fillColor = PaintColors.Green;
                break;

            case "Blue":
                fillColor = PaintColors.Blue;
                break;
            }

            SKBitmap bitmap = new SKBitmap();

            //ペン先のパターン設定
            switch (fillPatternPicker.SelectedItem as string)
            {
            default:
            case "Normal":
                bitmap = PaintPatterns.NormalPattern(fillColor);
                break;

            case "Rough3x3":
                bitmap = PaintPatterns.Rough3x3Pattern(fillColor);
                break;

            case "Rough2x2":
                bitmap = PaintPatterns.Rough2x2Pattern(fillColor);
                break;

            case "Beads4x4":
                bitmap = PaintPatterns.Beads4x4Pattern(fillColor);
                break;

            case "StripeX":
                bitmap = PaintPatterns.StripeXPattern(fillColor);
                break;

            case "StripeY":
                bitmap = PaintPatterns.StripeYPattern(fillColor);
                break;

            case "Checkered":
                bitmap = PaintPatterns.CheckeredPattern(fillColor);
                break;

            case "Dense2x2":
                bitmap = PaintPatterns.Dense2x2Pattern(fillColor);
                break;

            case "Dense3x3":
                bitmap = PaintPatterns.Dense3x3Pattern(fillColor);
                break;

            case "LeftHatching":
                bitmap = PaintPatterns.LeftHatching8x8Pattern(fillColor);
                break;

            case "RightHatching":
                bitmap = PaintPatterns.RightHatching8x8Pattern(fillColor);
                break;
            }

            //暫定Pathにpentipを設定
            SKPaint fillPaint = new SKPaint
            {
                IsAntialias = false,
                Style       = SKPaintStyle.Fill,
                Shader      = SKShader.CreateBitmap(bitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat)
            };

            inProgressPath.FillPaint = fillPaint;
        }