Flutter繪製彎曲虛線

2021-09-20 03:27:17 字數 1849 閱讀 5705

修改main.dart檔案:

import 'package:flutter/material.dart';

@override

widget build(buildcontext context)

}class drawingpage extends statelesswidget

}class curvepainter extends custompainter

@override

bool shouldrepaint(custompainter olddelegate)

}

接下來我們在curvepainter中實現繪製:

我們使用cubicto方法設定路徑path:

void cubicto(double x1, double y1, double x2, double y2, double x3, double y3)
函式繪製路徑從當前點到(x3,y3),控制點是(x1,y1),(x2,y2)

正如你看到的,cubicto方法接受3個點作為引數,前兩個代表控制點,最後乙個是結束點。開始點就是你的pen當前坐在canvas中的點。

canvas的座標系是左上角是(0,0)。右下角是(size.width, size.height)。所以可以嘗試調整4個點:

void paint(canvas canvas, size size)
paint物件就是相當於我們的筆,被設定了藍色和寬度為3.

我們使用path表述貝塞爾曲線。moveto方法移動筆到開始點的位置。最後使用drawpath方法繪製出來。

可以是使用三方庫繪製虛線:

要使用它現在 pubspec.yml檔案新增這個庫:

dependencies:

flutter:

sdk: flutter

# use with the cupertinoicons class for ios style icons.

cupertino_icons: ^0.1.2

path_drawing: ^0.4.0

執行「flutter packages get」獲得庫,然後匯入標頭檔案就可以使用了:

import 'package:path_drawing/path_drawing.dart';
把上面的路徑用dashpath包裹一下就可以了:

canvas.drawpath(

dashpath(

path,

dasharray: circularintervallist([15.0, 10.5]),

),paint,

);

dashpath方法接受兩個引數,第乙個就是要繪製的path,第二個引數定義每一段虛線的長度和兩個虛線間的間隔長度。結果如下:

繪製粗虛線

以前很少畫虛線,因此不太關心繪製粗虛線該怎麼辦。最近需要用到這個功能,因此學習了一下,與大家共享。cpen類有兩個建構函式,我們經常用第乙個,而忽略了第二個。其實很多問到畫粗線時希望改變線頭的預設顯示方式,比如希望是圓弧頭而不是預設的方形頭等。都可以用這個建構函式定義的cpen物件來實現。這裡我主要...

canvas 繪製虛線

var mycanvas document.queryselector canvas 獲取上下文 var ctx mycanvas.getcontext 2d ctx.beginpath ctx.linewidth 5 ctx.moveto 200,200 ctx.lineto 450,200 ct...

Android豎虛線繪製

在android ui製作中,經常會需要一些線條作為分隔線,一般做個width或height為1dp的view就可以解決了,如果需要虛線,則需要在drawable目錄自定義xml進行繪製了,一般xml如下 然後在需要畫虛線的地方使用該drawable作為背景即可。不過如果需要一條豎虛線,就麻煩很多。...