周易可谓是一本国宝的书,里面研究的关系很让人佩服。最近看了一个这样的图片,于是利用flash 绘图api 创作一个这样的图案,这样的图案里面当中还有一些细节没处理的到,省略了一点设置。当中很多字都不会读。
拿来当练习是个不错选择。我之所以喜欢使用flash 绘图 api 是因为他可以让创作带来一点灵感,有区别其他的写作。
好吧。不算太高难度的。可以玩一下。
当中太极可以参考这里:
http://blog.csdn.net/hero82748274/archive/2010/02/26/5329138.aspx
import org.summerTree.graphics.TaiChi ;
为太极图案类;
package
{
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.*;
import flash.text.*;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.filters.GlowFilter;
import org.summerTree.graphics.TaiChi;
public class Main extends Sprite
{
private var fonts:String="丙庚申坤未丁午丙巳巽辰乙卯甲寅艮丑癸子壬亥乾戌辛";
private var fonts2:String="兑坤离巽震艮坎乾";
private var centerX:Number=stage.stageWidth*0.5;
private var centerY:Number=stage.stageHeight*0.5;
public function Main()
{
this.filters=[new GlowFilter(0xffffff)];
init();
}
private function init():void
{
drawSprite();
creatText();
}
private function drawSprite():void
{
var pen:Shape=new Shape();
addChild(pen);
pen.x=centerX;
pen.y=centerY;
pen.graphics.lineStyle(0,0xffffff);
pen.graphics.drawCircle(0,0,205);
pen.graphics.drawCircle(0,0,200);
pen.graphics.drawCircle(0,0,160);
pen.graphics.drawCircle(0,0,120);
pen.graphics.drawCircle(0,0,80);
trace(centerX);
for (var i:int=0; i<=8; i++)
{
pen.graphics.moveTo(0,0);
var targetX:Number=Math.cos(i*360/8*Math.PI/180+Math.PI/8)*200;
var targetY:Number=Math.sin(i*360/8*Math.PI/180+Math.PI/8)*200;
pen.graphics.lineTo(targetX,targetY);
}
for (var j:int=0; j<24; j++)
{
var startX:Number=Math.cos(j*360/24*Math.PI/180+Math.PI/8)*120;
var startY:Number=Math.sin(j*360/24*Math.PI/180+Math.PI/8)*120;
pen.graphics.moveTo(startX,startY);
var targetX:Number=Math.cos(j*360/24*Math.PI/180+Math.PI/8)*160;
var targetY:Number=Math.sin(j*360/24*Math.PI/180+Math.PI/8)*160;
pen.graphics.lineTo(targetX,targetY);
}
//太极
var taiji:TaiChi=new TaiChi(40);
taiji.move(stage.stageWidth*0.5,stage.stageHeight*0.5);
taiji.rotation=-90;
taiji.scaleX=-1;
addChild(taiji);
}
//创作文本
private function creatText():void
{//
var bitmapText:Sprite;
for (var i:int=0; i<24; i++)
{
bitmapText=creatBitmapText(fonts.charAt(i));
addChild(bitmapText);
bitmapText.x=centerX+Math.cos(i*360/24*Math.PI/180)*140;
bitmapText.y=centerY+Math.sin(i*360/24*Math.PI/180)*140;
bitmapText.rotation=getCircle_K(i*360/24*Math.PI/180);
if (i*360/24>180)
{
bitmapText.scaleX=bitmapText.scaleY=-1;
}
}
for (var j:int=0; j<8; j++)
{
bitmapText=creatBitmapText(fonts2.charAt(j));
addChild(bitmapText);
bitmapText.x=centerX+Math.cos(j*360/8*Math.PI/180)*100;
bitmapText.y=centerY+Math.sin(j*360/8*Math.PI/180)*100;
bitmapText.rotation=getCircle_K(j*360/8*Math.PI/180);
if (j*360/8>180)
{
bitmapText.scaleX=bitmapText.scaleY=-1;
}
}
}
//创建位图文字
private function creatBitmapText(str:String):Sprite
{
var textfield:TextField=new TextField();
textfield.autoSize=TextFieldAutoSize.LEFT;
textfield.defaultTextFormat=new TextFormat("Arail",20,0x000000,true);
textfield.text=str;
var bitmapData:BitmapData=new BitmapData(textfield.textWidth,textfield.textHeight,true,0x0);
bitmapData.draw(textfield);
var fontBitmap:Bitmap=new Bitmap(bitmapData,"auto",true);
fontBitmap.x=-fontBitmap.width/2;
fontBitmap.y=-fontBitmap.height/2;
var contain:Sprite=new Sprite();
contain.addChild(fontBitmap);
return contain;
}
//获取切线角度
private function getCircle_K(angle:Number):Number
{
var px:Number=Math.cos(angle);
var py:Number=Math.sin(angle);
var k:Number=- px / py;
return Math.atan(k) * 180 / Math.PI;
}
}
}