标签: flutter-canvas

用颤振画布在形状上切出一个洞

如何使用颤振画布在形状上“切一个洞”?我有一组相当复杂的形状,看起来像一个真实世界的物体。这个物体有一个洞,形状像一个圆角矩形。

我真的很想从一个形状中减去一个 RRect,但我找不到任何关于如何做到这一点的信息。 canvas.clipRRect(myRRect)只是删除未覆盖的所有内容myRRect。我想要相反的。即myRRect在当前画布形状或形状中制作形状孔。

dart flutter flutter-canvas

14
推荐指数
3
解决办法
3672
查看次数

在 Flutter Canvas 中对 Paint 对象使用渐变

我可以使用以下示例绘制半圆Flutter how to draw semicircle (half circle)

但是,该Paint对象似乎只接受 a Color(using Paint.color)。我想添加一个RadialGradientLinearGradient作为Color. 那可能吗?

canvas flutter flutter-layout flutter-canvas

14
推荐指数
1
解决办法
6842
查看次数

如何在flutter中使用拇指创建范围滑块作为png图像

如何在颤动中创建笑脸范围滑块。像下面的GIF图像。在此处输入图片说明

Discrete with Custom Theme 我尝试改变拇指形状。但我想将拇指更改为图像。

// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:math' as math;

import 'package:flutter/material.dart';

class SliderDemo extends StatefulWidget {
  static const String routeName = '/material/slider';

  @override
  _SliderDemoState createState() => new _SliderDemoState();
}

Path _triangle(double size, Offset thumbCenter, {bool invert = false}) {
  final Path thumbPath = new Path();
  final double height = …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-animation flutter-canvas

12
推荐指数
1
解决办法
3960
查看次数

颤动有向图。我可以将 CustomPainter 类与自定义小部件一起使用吗?

我想用颤振构建一个如下图所示的有向图。我不知道从哪里开始。我在互联网上搜索没有成功。这种图形需要哪些算法?我尝试使用自定义画家类构建此图。我不知道如何在自定义画家类中使用自定义小部件。(例如,旁边有人物图片和文字的矩形)。我只能绘制矩形和线条......缩放和平移我认为我可以用 GestureDetector 类来做。该图应该是动态可定制的。

在此处输入图片说明

dart flutter flutter-layout flutter-canvas

12
推荐指数
1
解决办法
2298
查看次数

如何从 Canvas CustomPaint 擦除/剪辑?

我已经尝试使用Canvas.clipPathwithGestureDetector就像画布上的橡皮擦一样,我在CustomPaint里面使用了Containerwith imageDecorationset,所以我想也许还有另一种解决方法,通过使用withCanvas.drawPath设置

 final Paint _eraserPaint = Paint()
    ..color = Colors.transparent
    ..blendMode = BlendMode.clear
    ..strokeWidth = 8
    ..style = PaintingStyle.stroke
    ..isAntiAlias = true;
Run Code Online (Sandbox Code Playgroud)

但它画黑线而不是擦除

知道如何解决这个问题吗?

谢谢

canvas flutter flutter-canvas

7
推荐指数
2
解决办法
1533
查看次数

如何在 Flutter 的 Canvas 上绘制小部件?

有没有办法在 aWidget上的给定位置绘制a Canvas

更具体地说,我想在实际小部件的前面单独绘制Marker与 a 相关的's的子小部件。这是创建一个可以做到这一点的尝试,但我无法弄清楚如何在画布上实际绘制小部件。使用requires a ,我不知道如何创建/检索:FlutterMapCanvasFlutterMapCustomPainterRenderObjectPaintingContext

class MarkerPainter extends CustomPainter {
  MapController mc;
  BuildContext context;
  List<Marker> markers;

  MarkerPainter(this.context, this.mc, this.markers);

  @override
  void paint(Canvas canvas, Size size) {
    if( markers != null && markers.isNotEmpty ){
      for(int i=0; i<markers.length; i++){
        Marker marker = markers[i];
        Offset o = myCalculateOffsetFromLatLng(marker.point, mc, context);

        // Won't work, this needs a PaintingContext...
        marker.builder(context).createElement().renderObject.paint(context, o); 
      }
    }
  }

  @override
  bool shouldRepaint(MarkerPainter oldDelegate) => oldDelegate.markers != …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutter-widget flutter-canvas fluttermap

7
推荐指数
1
解决办法
3280
查看次数

Flutter canvas:如何避免在图像区域之外绘制

import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
import 'dart:ui' as ui;

class EditImage extends StatefulWidget {
  final String filePath;
  EditImage({this.filePath});

  @override
  _EditImageState createState() => _EditImageState();
}

class _EditImageState extends State<EditImage> {
  ui.Image decodedImage;
  String newFilePath;
  GlobalKey myCanvasKey = GlobalKey();
  ImageEditor editor;
  Color color = Colors.blue;

  @override
  void initState() {
    loadImage(File(widget.filePath));
    super.initState();
  }

  void loadImage(File image) async {
    final data = await image.readAsBytes();
    decodedImage = await decodeImageFromList(data);
    editor = ImageEditor(image: decodedImage, strokeColor: color);
    setState(() {});
  }

  @override
  Widget build(BuildContext context) …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutter-canvas

7
推荐指数
1
解决办法
1280
查看次数

Flutter-drawAtlas圆形镂空

我正在尝试实现图像的圆形切口,并且我正在使用drawAtlas。这是到目前为止我的实现:

canvas.drawAtlas(
  image!,
  [
    /* Identity transform */
    RSTransform.fromComponents(
      rotation: 0.0,
      scale: 1,
      anchorX: 0,
      anchorY: 0,
      translateX: 0,
      translateY: 0,
    )
  ],
  [
    Rect.fromCircle(
      center: Offset(size.width / 2, size.height / 2),
      radius: 200,
    ),
  ],
  [],
  null,
  null,
  Paint(),
);
Run Code Online (Sandbox Code Playgroud)

虽然它确实有效,但它绘制了一个矩形图像。我想用一些画出同一图像的圆形切口strokeWidth。使用drawAtlas可以做到这一点吗?

dart flutter flutter-canvas flutter-custompainter

6
推荐指数
1
解决办法
623
查看次数

使用自定义 Painter 在 Flutter 中遮盖两个图像

你好,谁能告诉我为什么这个掩蔽尝试的背景是黑色的。这一定很接近,但我就是无法消除背景。我看到其他人提到这saveLayer(rect, paint)是这里的关键,因为它将整个画布矩形推入遮罩操作。这个问题(没有屏蔽操作)和这个问题(没有实际答案)很相似,但对我来说没有用。

主程序.dart

import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  ui.Image mask;
  ui.Image image;

  @override
  void …
Run Code Online (Sandbox Code Playgroud)

mask dart flutter flutter-canvas

4
推荐指数
2
解决办法
6387
查看次数

Flutter - 在 CustomPainter 中重用以前绘制的画布

我有一个 CustomPainter,我想每隔几毫秒渲染一些项目。但我只想渲染自上次绘制以来发生变化的项目。我计划手动清除将在该区域内更改和重绘的区域。问题是每次调用paint() 时,Flutter 中的画布似乎都是全新的。我知道我可以跟踪整个状态并每次都重绘所有内容,但出于性能原因和特定用例并不可取。以下是可能代表该问题的示例代码:

我知道当画布大小改变时,一切都需要重新绘制。

import 'dart:async';
import 'dart:math';

import 'package:flutter/material.dart';

class CanvasWidget extends StatefulWidget {
  CanvasWidget({Key key}) : super(key: key);

  @override
  _CanvasWidgetState createState() => _CanvasWidgetState();
}

class _CanvasWidgetState extends State<CanvasWidget> {
  final _repaint = ValueNotifier<int>(0);
  TestingPainter _wavePainter;

  @override
  void initState() {
    _wavePainter = TestingPainter(repaint: _repaint);
    Timer.periodic( Duration(milliseconds: 50), (Timer timer) {
      _repaint.value++;
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return CustomPaint(
       painter: _wavePainter,
    );
  }
}

class TestingPainter extends CustomPainter {
  static const double _numberPixelsToDraw = 3;
  final …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-canvas

4
推荐指数
1
解决办法
1000
查看次数