1: If I load say three 2D arrays to then draw on screen (loading and drawing one array per update) would it be better to save the result to a buffered bitmap and draw that each update instead to increase speed of drawing?
2: When drawing a buffered bitmap can it be moved about the screen without having to load and recalculate and apply the arrays to the buffered bitmap? My arrays are made up of coordinates which should adjust position relative to your own.
3: I have this code for drawing the arrays at the moment, it is slow but not bad on memory, would it just be a case of replacing dc.drawLine with creating a buffered bitmap?
function onUpdate(dc) {
View.onUpdate(dc);
var gw = dc.getWidth(),gh = dc.getHeight(); dc.setColor(Graphics.COLOR_BLACK, Graphics.COLOR_BLACK); dc.clear();
dc.setColor(Graphics.COLOR_TRANSPARENT, Graphics.COLOR_BLACK); dc.clearClip(); var m =
Position.getInfo().position;
var py = null; var px = null; var pyOld = null; var pxOld = null;
var heading2 = Sensor.getInfo().heading;
if (Map != null){ MapArr = WatchUi.loadResource(Rez.JsonData[Map[NumPick]]); }
if (m != null){
if (MapArr != null) {
m = m.toDegrees();
for (var i=0; i<MapArr.size();i++)
{ var arr = MapArr[i];
for (var j=0; j<arr.size() - 2;j+=2)
{ var long = arr[j]; var lat = arr[j+1];
var pixelsLon = (long - m[1]) * zoom + (gw/2);
var pixelsLat = (m[0] - lat) * zoom + (gh/2);
py = pixelsLat.toNumber();
px = pixelsLon.toNumber();
var pyRot = Math.sin(heading2) * (px - 120) - Math.cos(heading2) * (py - 120) + 120;
var pxRot = Math.cos(heading2) * (px - 120) - Math.sin(heading2) * (py - 120) + 120; dc.setColor(Graphics.COLOR_GREEN, Graphics.COLOR_TRANSPARENT);
if (pxOld != null){ dc.setPenWidth(3); if (j==0){ dc.setColor(Graphics.COLOR_TRANSPARENT,Graphics.COLOR_TRANSPARENT);}
else if (j > 0) { dc.setColor(Graphics.COLOR_GREEN, Graphics.COLOR_TRANSPARENT);}
dc.drawLine(pxOld, pyOld, px,py); } pxOld = px; pyOld = py; }
if (i == (MapArr.size() - 1)){
if (NumPick != (Map.size() - 1)){ NumPick = NumPick + 1; dc.setClip(0, 0, gw, 40);}
else if (NumPick == (Map.size() - 1) && i == (MapArr.size() - 1)){ NumPick = 0; //dc.clearClip(); } } } } }