Как-то так:

Код AS3:
var p1 : Point = new Point( 200, 100 );
var p2 : Point = new Point( 250, 150 );
var p3 : Point = new Point( 50, 250 );
var triangle : Shape = new Shape();
var g : Graphics = triangle.graphics;
var gradient_colors : Array = new Array( 0x000000, 0xFFFFFF );
var gradient_alphas : Array = new Array( 1.0, 1.0 );
var gradient_ratios : Array = new Array( 0, 255 );
var gradient_matrix : Matrix = new Matrix();
var angle : Number = Math.atan2( p2.y - p1.y, p2.x - p1.x );
gradient_matrix.createGradientBox( p2.x - p1.x, p2.y - p1.y, angle, p1.x, p1.y );
g.beginGradientFill( GradientType.LINEAR, gradient_colors, gradient_alphas, gradient_ratios, gradient_matrix );
g.lineStyle( 1 );
g.moveTo( 200, 100 );
g.lineTo( 250, 150 ); triangle.graphics.lineTo( 50, 250 );
g.lineTo( 200, 100 );
g.endFill();
addChild( triangle );
Объяснять лень.
Ах да, раз уж есть p1, p2 и p3, то в moveTo() и lineTo() лучше, конечно, их использовать.