2017-05-13 14 views
0

こんにちは、私はダーツにはかなり新しいです。私が達成したいのは、以前のものを定期的に残してキャンバスに描画することです。ダーツで定期的にキャンバスに描く

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


Duration timeBase; 
double x = 0.0; 
double y = 0.0; 
int i = 0; 

ui.Image image; 

void beginFrame(Duration timeStamp){ 
    Timeline.timeSync('beginFrame',(){ 
    if(timeBase == null)timeBase = timeStamp; 
    final double devicePixelRatio = ui.window.devicePixelRatio; 
    // paint 
    ui.Rect paintBounds = ui.Offset.zero & ui.window.physicalSize; 
    ui.PictureRecorder recorder = new ui.PictureRecorder(); 
    ui.Canvas canvas = new ui.Canvas(recorder,paintBounds); 
    if(image != null){ 
     canvas.drawImage(image,ui.Offset.zero,new ui.Paint()); 
    } 

    var paint = new ui.Paint(); 
    paint.color = const ui.Color.fromARGB(255,0,255,0); 
    paint.strokeCap = ui.StrokeCap.round; 
    paint.strokeWidth = 17.0; 
    canvas.drawLine(new ui.Offset(x,y),new ui.Offset(x + 25,y + 25),paint); 
    x = x + 1; 
    if(x > ui.window.physicalSize.width/devicePixelRatio){ 
     x = x - ui.window.physicalSize.width/devicePixelRatio; 
    } 
    y = y + 1; 
    if(y > ui.window.physicalSize.height/devicePixelRatio){ 
     y = y - ui.window.physicalSize.height/devicePixelRatio; 
    } 


    ui.Picture picture = recorder.endRecording(); 
    image = picture.toImage(ui.window.physicalSize.width.toInt(),ui.window.physicalSize.height.toInt()); 


    // composite 
    Float64List deviceTransform = new Float64List(16) 
     ..[0] = devicePixelRatio 
     ..[5] = devicePixelRatio 
     ..[10] = 1.0 
     ..[15] = 1.0; 
    ui.SceneBuilder sceneBuilder = new ui.SceneBuilder() 
     ..pushTransform(deviceTransform) 
     ..addPicture(ui.Offset.zero,picture) 
     ..pop(); 
    ui.window.render(sceneBuilder.build()); 
    }); 
    ui.window.scheduleFrame(); 
} 
void main() { 
    ui.window.onBeginFrame = beginFrame; 
    ui.window.scheduleFrame(); 
} 

問題は、以前のイメージ、描画drawImageによる描画がキャンバスに表示されなかったことです。 事前にお手数をおかけしていただきありがとうございます。

答えて

1

これはfixedというバグです。マスターブランチにいる場合は、flutter upgradeを実行してください。

次のようになります。screenshot

関連する問題