mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-11 18:11:12 +08:00
feat: Expose paint from svgComponent to set opacity and have opacity effects (#2092)
This commit is contained in:
@@ -41,14 +41,19 @@ class Svg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Renders the svg on the [canvas] using the dimensions provided by [size].
|
/// Renders the svg on the [canvas] using the dimensions provided by [size].
|
||||||
void render(Canvas canvas, Vector2 size) {
|
void render(
|
||||||
|
Canvas canvas,
|
||||||
|
Vector2 size, {
|
||||||
|
Paint? overridePaint,
|
||||||
|
}) {
|
||||||
final _size = size.toSize();
|
final _size = size.toSize();
|
||||||
final image = _getImage(_size);
|
final image = _getImage(_size);
|
||||||
|
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
canvas.save();
|
canvas.save();
|
||||||
canvas.scale(1 / pixelRatio);
|
canvas.scale(1 / pixelRatio);
|
||||||
canvas.drawImage(image, Offset.zero, _paint);
|
final drawPaint = overridePaint ?? _paint;
|
||||||
|
canvas.drawImage(image, Offset.zero, drawPaint);
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
} else {
|
} else {
|
||||||
_render(canvas, _size);
|
_render(canvas, _size);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:flame/components.dart';
|
|||||||
import 'package:flame_svg/svg.dart';
|
import 'package:flame_svg/svg.dart';
|
||||||
|
|
||||||
/// Wraps [Svg] in a Flame component.
|
/// Wraps [Svg] in a Flame component.
|
||||||
class SvgComponent extends PositionComponent {
|
class SvgComponent extends PositionComponent with HasPaint {
|
||||||
/// The wrapped instance of [Svg].
|
/// The wrapped instance of [Svg].
|
||||||
Svg? _svg;
|
Svg? _svg;
|
||||||
|
|
||||||
@@ -18,7 +18,10 @@ class SvgComponent extends PositionComponent {
|
|||||||
super.anchor,
|
super.anchor,
|
||||||
super.children,
|
super.children,
|
||||||
super.priority,
|
super.priority,
|
||||||
}) : _svg = svg;
|
Paint? paint,
|
||||||
|
}) : _svg = svg {
|
||||||
|
this.paint = paint ?? this.paint;
|
||||||
|
}
|
||||||
|
|
||||||
set svg(Svg? svg) {
|
set svg(Svg? svg) {
|
||||||
_svg?.dispose();
|
_svg?.dispose();
|
||||||
@@ -30,7 +33,7 @@ class SvgComponent extends PositionComponent {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void render(Canvas canvas) {
|
void render(Canvas canvas) {
|
||||||
_svg?.render(canvas, size);
|
_svg?.render(canvas, size, overridePaint: paint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user