私はアンドロイドでオシロスコープを作っています。これまでベース軸を作成してきましたが、この軸はプログラムが起動するたびに描画されます。ここで、軸キャンバスを初めて作成した後に保存することで、パフォーマンスを少し改善したいと考えています。私の考えは、このキャンバスをビットマップとして保存し、次回それを呼び出すことです:
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 などを使用して (解像度に依存しない) 少なくとも最初に作成するときに動的に描画する必要があります...