привожу полный пример тестового файла — собственно вывод квадратика и текста в нем и под ним на экран с помощью
Graphics
Если используется таймер для перерисовки данного класса, то возникает ситуация с увеличением памяти как в самой среде Sciter, так и в программе (если она использует sciter.dll).
Т.е. память по графике не освобождается.
Как сделать, чтобы память при перерисовке освобождалась — возможно что-то в примере некорректно?
<html>
<head>
<title>Sciter2 </title>
<style>
div.Speedometer {
prototype:SpeedTT;
width:*;
height:*;
border:1px solid black;
}
</style>
<script type="text/tiscript">
// 2 вспомогат функции прорисовки
// квадрат от центра
function w_drawRectCenter(gfx,ax,ay,aWidth,aHeight,aRx=0,aRy=0)
{
var LRx=aRx;
var LRy=aRx;
if ((LRx>0) && (aRy>0)) {LRy=aRy}
//
if (LRx==0) {gfx.rectangle(ax-aWidth*0.5,ay-aHeight*0.5,aWidth,aHeight);}
else {gfx.rectangle(ax-aWidth*0.5,ay-aHeight*0.5,aWidth,aHeight,LRx,LRy)}
}
//
// текст в центре
function w_drawTextCenter(gfx,Ltext,aLength,ax,ay,aSize,aLineWidth)
{
var L_deltaBaseLine=aSize/6; // текст по базовой линии - поэтому сдвигаем его относительно нее вверх
var L_L =Ltext;
L_L.font("Arial",aSize);
L_L.width(aSize*(aLength+1));
L_L.height(aSize);
var (at,at1)=L_L.width();
//gfx.rectangle(-at*0.5,-L_L.height()*0.5,at+aLineWidth*2,L_L.height());
gfx.save();
gfx.drawText(L_L,ax-at*0.5,ay-L_L.height()*0.5-L_deltaBaseLine,7);
gfx.restore();
return true;
}
// класс Behavior
class SpeedTT: Behavior
{
function attached() {
this.paintContent =this.drawSpeed;
}
function drawSpeed(gfx)
{
var (x,y,w,h) = this.box(#rectw);
var scale = w < h? w / 300.0: h / 300.0;
//
gfx.save();
gfx.translate(w*0.5,h*0.5);
var Lmin = w < h? w: h;
gfx.lineWidth(1);
gfx.lineColor(color("red"));
gfx.fillColor(color("yellow"));
w_drawRectCenter(gfx,0,0,200,120,5,5);
var TextStr1="Text+BB+text";
var TextStr2="gggggggggggggggggggggggggggggggggggggggg";
var LL1=new Graphics.Text(TextStr1);
var LL2=new Graphics.Text(TextStr2);
gfx.lineColor(color("navy"));
gfx.fillColor(color("lime"));
var LtextSize=16;
w_drawTextCenter(gfx,LL1,TextStr1.length, 0,0,LtextSize+8,1);
w_drawTextCenter(gfx,LL2,TextStr2.length, 0,150,LtextSize+8,1);
//
gfx.restore();
}
}
////// основное
function self.ready(){
var body = $(body);
$(#spTT).prototype=SpeedTT;
$(#spTT).attached();
body.timer(30,function(){$(#spTT).refresh(); return true;});
}
</script>
</head>
<body>
<h2>Sciter2 test_TT</h2>
<div #spTT class="Speedometer" ></div>
</body>
</html>