簡體   English   中英

如何在 flutter 中制作這樣的 CustomPaint

[英]How to made CustomPaint like this in flutter

我知道這不是最好的方法,但我真的不能這樣做。 如何制作這樣的東西。 我對幾何很爛。 我嘗試用cubicTo做到這一點,但我沒有得到這個效果:/。

有人能幫我嗎。 以下是我的代碼的一部分。

var sw = size.width;
var sh = size.height;

var path = Path();

path.cubicTo(sw/2, 0, sw/4, 0, 2*sw/4, 2*sh/4);
path.cubicTo(2*sw/3, 2*sh/3, sw/3, 0, sw, 0);
path.cubicTo(0, 0, 0, 0, sw, 0);
path.lineTo(sw, sh);
path.lineTo(0, sh);
path.close();

在此處輸入圖像描述

看一下這個...

class Paintter extends CustomPainter{
  @override
  void paint(Canvas canvas, Size size) {
    Paint paint = Paint()..color = Colors.orange;
    var path = Path();
    double factor = 100;
    path.lineTo(0, size.height);
    path.lineTo(size.width, size.height);
    path.lineTo(size.width, 0);
    path.lineTo(size.width - factor, 0);
    path.quadraticBezierTo(size.width/2, size.height, factor, 0);
    path.lineTo(0, 0);
    canvas.drawPath(path, paint);
  }

output: 在此處輸入圖像描述

Path@arcToPoint可用於繪制圓/橢圓段。

例如,對於半徑等於矩形高度一半的圓:

final w = size.width;
final h = size.height;
final r = h / 2;

final path = Path();
path.moveTo(0, 0);
path.lineTo(w / 2 - r, 0);
path.arcToPoint(
  Offset(w / 2 + r, 0),
  radius: Radius.circular(r),
  clockwise: false,
);
path.lineTo(w, 0);
path.lineTo(w, h);
path.lineTo(0, h);
path.close();

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM