Вечер добрый.
Все строится программно.
Сетку и изменение размера реализовал.
Вопрос насчет вращения. Вращать относительно точки регистрации это ясно. А вот как с другими вершинами?

Код AS1/AS2:
Stage.scaleMode = "noScale";
import mx.transitions.Tween;
import mx.transitions.easing.*;
this.createEmptyMovieClip("setka",0);
setka.lineStyle(1,0x000000);
for (var i=0; i < 50; i++) {
setka.moveTo (i*10,0);
setka.lineTo(i*10,500);
}
for (var j=0; j < 50; j++) {
setka.moveTo (0,j*10);
setka.lineTo(550,j*10);
}
setka.lineStyle(1,0x00ff00);
setka.moveTo(250,0);
setka.lineTo(250,500);
setka.moveTo(0,250);
setka.lineTo(500,250);
mc = _root.createEmptyMovieClip("sqr",this.getNextHighestDepth());
mc._x=250;
mc._y=250;
sqr.lineStyle(1, 0x33CCCC);
sqr.beginFill(0x333333);
sqr.moveTo(0,0);
sqr.lineTo(60, 0);
sqr.lineTo(60,40);
sqr.lineTo(0, 40);
sqr.lineTo(0, 0);
sqr.endFill();
bt.onPress=function(){
sqr.onReleaseOutside = function() {
//if ((_xmouse>=this._width-10) && (_xmouse<=this._width) && (_ymouse>=this._height-10) && (_ymouse<=this._height)){
this.varTween = new Tween(this, "_width", Regular.easeOut, this._width, _xmouse-250, 0.5, true);
this.varTween = new Tween(this, "_height", Regular.easeOut, this._height, _ymouse-250, 0.5, true);}//
sqr.onRelease= function() {
//if ((_xmouse>=this._width-10) && (_xmouse<=this._width) && (_ymouse>=this._height-10) && (_ymouse<=this._height)){
this.varTween = new Tween(this, "_width", Regular.easeOut, this._width, _xmouse-250, 0.5, true);
this.varTween = new Tween(this, "_height", Regular.easeOut, this._height, _ymouse-250, 0.5, true);}//
}
bt2.onRelease=function(){
sqr.onPress = function(){
this._rotation+=3;
}
}