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
            }
        }
}

このキャンバスを保存して後で呼び出す方法を教えてください。つまりOnDrawイベントで!

PS:CreateAxis(canvas)軸を描く方法です。これはどのように見えるかです: ここに画像の説明を入力

電圧とタイムベースの分割の間の固定距離をハードコーディングしたくないので、ExactCenterY などを使用して (解像度に依存しない) 少なくとも最初に作成するときに動的に描画する必要があります...

4

1 に答える 1

0

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

于 2012-05-11T13:15:00.840 に答える