パフォーマンスに関しては、プロファイリングなしでは言えません。
線画はターゲットの電話でハードウェアアクセラレーションされている可能性があり、フレームごとに線画プリミティブを使用してグラフを最初から描画する必要があります。
一方、画像バッファの簡単なピクセル操作は次のようになります。
適切なサイズの画像を作成し、「」にクリアしbackground_color
ます。この画像にはsetpixel()機能が必要です。
各x時間のyを記録する値の配列があるので、どの列についても、最後にグラフをプロットした場所がわかります。
この" chart_image
"と" chart_array
"を循環バッファとして扱います。各タイムステップについて:
Y = ...;
X = time_since_start % chart_width;
chart_image.setpixel(X,chart_array[X],background_color); // clear previous line
chart_array[X] = Y;
chart_image.setpixel(X,chart_array[X],foreground_color); // draw new plot
そして今、あなたはそれをブリットする必要があります。画像を2回ブリットする必要があります。
X = time_since_start % chart_width;
// the newest data is on the left of the chart_image but gets drawn on the right side of the output
blit(out_x+X,out_y, // destination coordinates
chart_image,
0,0, // top left of part of chart_image to blit
X,chart_height); // bottom right of chart_image part
// the oldest data is on the right of the chart_image but gets drawn on the left side of the output
blit(out_x,out_y,
chart_image,
X,0,
chart_width,chart_height);
個々のピクセルではなく線を使用したい場合は、さらに注意が必要ですがdrawline()
、缶の代わりにsetpixel()
このアプローチでも機能させることができます。
(Android APIを知らないことをお詫びしますが、アプローチは一般的です。)