天天看点

flash绘图API :周易八卦

flash绘图API :周易八卦

  周易可谓是一本国宝的书,里面研究的关系很让人佩服。最近看了一个这样的图片,于是利用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;

}

}

}

继续阅读