flash绘图API :周易八卦

flash绘图API :周易八卦

周易可谓是一本国宝的书,里面研究的关系很让人佩服。最近看了一个这样的图片,于是利用flash 绘图api 创作一个这样的图案,这样的图案里面当中还有一些细节没处理的到,省略了一点设置。当中很多字都不会读。

拿来当练习是个不错选择。我之所以喜欢使用flash 绘图 api 是因为他可以让创作带来一点灵感,有区别其他的写作。

好吧。不算太高难度的。可以玩一下。

当中太极可以参考这里:

http://blog.****.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; } } }