Mingで円グラフを作成するサンプルです.といっても,ほとんど ActionScriptですが・・・.円の描画においては描画 メソッドで円を描くを参考にさせていただきました.
#!/usr/bin/perl -w
#
# make Pie Chart and Donut Chart
#
use strict;
use SWF qw(:ALL);
SWF::setScale(20.0);
SWF::setVersion(6);
my $m = new SWF::Movie();
$m->setBackground(0xff,0xff,0xff);
$m->setDimension(300, 200);
$m->setRate(30);
#---------------------------------------------------------------------------
# start actionscript
#---------------------------------------------------------------------------
my $strAction = <<'EOS';
_root.depth = 1;
_root.myMain = function()
{
var aData = new Array(219, 123, 70, 32, 55);
var aColor = new Array(0x00de2b, 0xdc143c, 0x6a5acd, 0xff4500, 0x8b008b);
drawPieChart("pie", aData, aColor, 70, 100, 60, 0);
var aData2 = new Array(40, 15, 45);
var aColor2 = new Array(0x0000ff, 0x666666, 0xff00000);
drawPieChart("donut", aData2, aColor2, 225, 100, 60, 0.5);
};
function drawPieChart(objName, aData, aColor, nX, nY, nR, nDonut)
{
var nTotal = 0;
for ( var i=0; i=0; --i) {
xDrawSectorClockwise(target_mc, i*nAngle, nAngle,
nX, nY, nDonut*nR, 0);
}
} else {
target_mc.lineTo(0, 0);
}
};
function xDrawSectorClockwise(target_mc, nTheta, nAngle, nX, nY, nR,
isClockWise)
{
var cw = isClockWise ? 1 : -1;
var nAnchorX = nR*Math.cos(nTheta);
var nAnchorY = nR*Math.sin(nTheta);
var nControlX =
nAnchorX+nR*Math.tan(cw*nAngle/2)*Math.cos(nTheta-Math.PI/2);
var nControlY =
nAnchorY+nR*Math.tan(cw*nAngle/2)*Math.sin(nTheta-Math.PI/2);
target_mc.curveTo(nControlX+nX, nControlY+nY, nAnchorX+nX, nAnchorY+nY);
};
// main
_root.myMain();
EOS
$m->add(new SWF::Action($strAction));
$m->nextFrame();
$m->save("piechart.swf",9);
Up(P): Home
間違え,勘違い,スペルミスなどは
まで
Last modified: Sat Feb 4 23:27:18 JST 2006