2012-05-11 11 views
0

私はアンドロイドでオシロスコープを作っています。これまでは基本軸を作っていましたが、この軸はプログラムが始まるたびに描かれています。今度は、初めて作成した後で軸キャンバスを保存することで、パフォーマンスを少し改善したいと考えています。私の考えは、次の回をビットマップとして、このキャンバスを保存し、それを思い出すことです。キャンバスを保存して後で再利用する

public class ScopeCanvas : View 
    { 

     private Context _context; 

     public double TimeBase { get; set; } 
     public double VoltagePerDiv { get; set; } 

     private Canvas _axisCanvas; 
     private Bitmap _savedAxisCanvas; 

     /// <summary> 
     /// Constructor 
     /// </summary> 
     /// <param name="context">Context</param> 
     public ScopeCanvas(Context context, double timeBase, double voltagePerDiv) : base(context) 
     { 
      _context = context; 

      TimeBase = timeBase; 
      VoltagePerDiv = voltagePerDiv; 
     } 

     protected override void OnDraw(Canvas canvas) 
     { 
      base.OnDraw(canvas); 

      if(_axisCanvas == null) 
      { 
       _axisCanvas = CreateAxis(canvas); 

#if DEBUG 
       Console.WriteLine("Axis canvas newly created!"); 
#endif 
      } 
      else 
      { 
#if DEBUG 
       Console.WriteLine("Using pre made axis canvas!"); 
#endif 
      } 
     } 
} 

はSomoneのはpleae私はこのキャンバスを保存し、後でそれを思い出すことができる方法を教えてもらえますか?私はOnDrawイベントを意味します!

P.S:CreateAxis(canvas)私はそれに軸を描く方法です。私はハードコードに電圧、時間ベースの部門間の一定の距離をたくないので、この必要性はExactCenterYのようなものを使用してdynamicly少なくともそれが作成する最初の時間(resoloution独立した)を描画する enter image description here

と:これは、それがどのように見えるかです...

答えて

0

あなたはメンバー変数にそれを参照できますが、これは良い考えではありません。 後でそのキャンバスに描画したい場合は、再度onDraw()メソッドが呼び出され、指定されたキャンバスを使用できるようにビューを無効にしてみてください。

+0

はいこのキャンバスで波形を後で再描画しますか?あなたは少しのコードを提供していただけますか?何をどこでどこで無効にしなければならないか、私が作った軸をどうやって保存するか分かりません。 –

関連する問題