drawSpecialPoint static method
Implementation
static void drawSpecialPoint(
Canvas canvas, PointModel pointModel, Offset centerPointOffset) {
if (pointModel.cellPointSet.pointType == PointType.PlacehoderImage) {
if (pointModel.cellPointSet.placehoderImage == null) {
return;
}
var placeImageSize = pointModel.cellPointSet.placeImageSize;
canvas.drawImageRect(
pointModel.cellPointSet.placehoderImage!,
Rect.fromLTWH(
0,
0,
pointModel.cellPointSet.placehoderImage!.width.toDouble(),
pointModel.cellPointSet.placehoderImage!.height.toDouble()),
Rect.fromLTWH(
pointModel.offset.dx -
placeImageSize.width / 2 +
centerPointOffset.dx,
pointModel.offset.dy -
placeImageSize.height / 2 +
centerPointOffset.dy,
placeImageSize.width,
placeImageSize.height),
Paint(),
);
} else {
var centerOffset = Offset(pointModel.offset.dx + centerPointOffset.dx,
pointModel.offset.dy + centerPointOffset.dy);
var rect = Rect.fromLTRB(
centerOffset.dx - pointModel.cellPointSet.pointSize.width / 2,
centerOffset.dy - pointModel.cellPointSet.pointSize.height / 2,
centerOffset.dx + pointModel.cellPointSet.pointSize.width / 2,
centerOffset.dy + pointModel.cellPointSet.pointSize.height / 2,
);
var paint = Paint()
..isAntiAlias = true
..strokeWidth = 1.0
..strokeCap = StrokeCap.round
..style = PaintingStyle.fill
..shader = LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
tileMode: TileMode.mirror,
colors: pointModel.cellPointSet.pointShaderColors ??
[defaultColor, defaultColor.withOpacity(0.3)])
.createShader(rect);
canvas
..drawDRRect(
RRect.fromRectAndCorners(rect,
topLeft: pointModel.cellPointSet.pointRadius,
topRight: pointModel.cellPointSet.pointRadius,
bottomLeft: pointModel.cellPointSet.pointRadius,
bottomRight: pointModel.cellPointSet.pointRadius),
RRect.zero,
paint);
}
}