ããJavaè¯è¨å¨Graphicsç±»æä¾ç»å¶åç§åºæ¬çå ä½å¾å½¢çåºç¡ä¸,æ©å±Graphicsç±»æä¾ä¸ä¸ªGraphics2Dç±»,å®æ¥ç¨æ´å¼ºå¤§çäºç»´å¾å½¢å¤çè½å,æä¾ãåæ 转æ¢ãé¢è²ç®¡ç以åæåå¸å±çæ´ç²¾ç¡®çæ§å¶ã
ããç»å¾å±æ§
ããGraphics2Då®ä¹äºå ç§æ¹æ³ï¼ç¨äºæ·»å ææ¹åå¾å½¢çç¶æå±æ§ãå¯ä»¥éè¿è®¾å®åä¿®æ¹ç¶æå±æ§ï¼æå®ç»ç¬å®½åº¦åç»ç¬çè¿æ¥æ¹å¼ï¼è®¾å®å¹³ç§»ãæ转ã缩æ¾æä¿®åªåæ¢å¾å½¢ï¼ä»¥å设å®å¡«å
å¾å½¢çé¢è²åå¾æ¡çãå¾å½¢ç¶æå±æ§ç¨ç¹å®ç对象åå¨ã
ãã1. strokeå±æ§
ããstrokeå±æ§æ§å¶çº¿æ¡ç宽度ãç¬å½¢æ ·å¼ã线段è¿æ¥æ¹å¼æçå线å¾æ¡ã该å±æ§ç设置éè¦å
å建BasicStroke对象ï¼åè°ç¨setStroke()æ¹æ³æ¥è®¾ç½®ãå建BasicStroke对象çæ¹æ³æï¼
ããBasicStroke(float w)ï¼æå®çº¿æ¡å®½wã
ããBasicStroke(float w,int cap, int join)ï¼
ããcapæ¯ç«¯ç¹æ ·ï¼CAP_BUTT(æ 修饰)ï¼CAP_ROUND(ååå½¢æ«ç«¯)ï¼CAP_SQUARE(æ¹å½¢æ«ç«¯ï¼é»è®¤å¼)ã
ããJoinå®ä¹ä¸¤çº¿æ®µäº¤æ±å¤çè¿æ¥æ¹å¼ï¼JOIN_BEVEL(æ 修饰),JOIN_MTTER(å°å½¢æ«ç«¯ï¼é»è®¤å¼),JOIN_ROUND(åå½¢æ«ç«¯)ã
ãã2. paintå±æ§
ããpaintå±æ§æ§å¶å¡«å
ææãå
è°ç¨ä»¥ä¸æ¹æ³ç¡®å®å¡«å
ææï¼çç¨setPaint()æ¹æ³è®¾ç½®ã
ããGradientPaint(float x1,float y1,Color c1,float x2,flaot y2,Color c2)ï¼ä»(x1,y1)å°(x2,y2)é¢è²ä»c1æ¸åå°c2ãå
¶ä¸ï¼åæ°c1,c2å³å®è¿ä¸ªæ¸åè²æ¯ä»é¢è²c1æ¸åå°é¢è²c2ãåæ°x1,y1,x2,y2å³å®äºæ¸åç强弱ï¼å³è¦æ±ä»ç¹(x1,y1)åºåå°è¾¾ç¹(x2,y2)ï¼é¢è²ä»c1åæc2ã
ããGradientPaint(float x1,float y1,Color c1,float x2,float y2,Color c2,Boolean cyclic)ï¼å¦æå¸ææ¸åå°ç»ç¹åæ¯èµ·ç¹çé¢è²ï¼åºå°cyclic设置为trueã
ãã3. transformå±æ§
ããtransform å±æ§ç¨æ¥å®ç°å¸¸ç¨çå¾å½¢å¹³ç§»ã缩æ¾åæåçåæ¢æä½ãé¦å
å建AffineTransform对象ï¼ç¶åè°ç¨setTransform()æ¹æ³è®¾ç½®transformå±æ§ãæåï¼ç¨å
·ææå®å±æ§çGraphics2D对象ç»å¶å¾å½¢ãå建AffineTransform对象çæ¹æ³æï¼
ããgetRotateinstrance(double theta)ï¼æ转theta弧度ã
ããgetRotateInstance(double theta,dioble x,double y)ï¼ç»æ转ä¸å¿(x,y)æ转ã
ããgetScaleInstance(double sx,double sy)ï¼xåy æ¹ååå«æsx,syæ¯ä¾åæ¢ã
ããgetTranslateInstance(double tx,double ty)ï¼å¹³ç§»åæ¢ã
ããgetShearInstance(double shx,double shy)ï¼æååæ¢ï¼shxåshyæå®ææ度ã
ããä¹å¯ä»¥å
å建ä¸ä¸ªæ²¡ætransformå±æ§çAffineTransform对象ï¼ç¶åç¨ä»¥ä¸æ¹æ³æå®å¾å½¢å¹³ç§»ãæ转ã缩æ¾åæ¢å±æ§ã
ããtranselate(double dx,double dy)ï¼å°å¾å½¢å¨xè½´æ¹å平移dxåç´ ã
ããscale(double sx,double sy)ï¼å¾å½¢å¨xè½´æ¹å缩æ¾sxåï¼çºµå缩æ¾syåã
ããrotate(double arc,double x, double y)ï¼å¾å½¢ä»¥ç¹(x,y)为轴ç¹ï¼æ转arc弧度ã
ããä¾å¦ï¼å建AffineTransform对象ï¼
ããAffineTransform trans = new AffineTransform();
ãã为AffineTransform对象æå®ç»ç¹æ转åæ¢å±æ§ï¼
ããTrans.rotate(50.0*3.1415927/180.0,90,80);
ããæ¥ç为Graphics2D ç对象g2d设置å
·æä¸è¿°æ转åæ¢åè½çâç»ç¬âï¼
ããGraphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);
ããæåï¼ä»¥å¾å½¢å¯¹è±¡ä¸ºåæ°è°ç¨å
·æåæ¢åè½çGraphics2D 对象çdraw()æ¹æ³ãä¾å¦ï¼è®¾å·²æä¸ä¸ªäºæ¬¡æ²çº¿å¯¹è±¡curveï¼ä»¥ä¸ä»£ç å®ç°ç¨ä¸è¿°æ转åè½çg2d对象ç»å¶è¿æ¡äºæ¬¡æ²çº¿ï¼
ããg2d.draw(curve);
ãã4. clipå±æ§
ããclipå±æ§ç¨äºå®ç°åªè£ææã设置åªè£å±æ§å¯è°ç¨setClip()æ¹æ³ç¡®å®åªè£åºçShapeãè¿ç»å¤ä¸ªsetClip()å¾å°å®ä»¬äº¤éçåªè£åºã
ãã5. compositå±æ§
ããcompositå±æ§è®¾ç½®å¾å½¢éå åºåçææãå
ç¨æ¹æ³AlphaComposite.getInstance(int rule, float alpha)å¾å°AlphaComposite对象ï¼åéè¿setComposite()æ¹æ³è®¾ç½®æ··åææãAlphaå¼çèå´ä¸º0.0f(å®å
¨éæ)-0.1f(å®å
¨ä¸éæ)ã
ããGraphics2Dç±»çç»å¾æ¹æ³
ããGraphics2Dç±»ä»ç¶ä¿çGraphicsç±»çç»å¾æ¹æ³ï¼åæ¶å¢å äºè®¸å¤æ°æ¹æ³ãæ°æ¹æ³å°å ä½å¾å½¢(线段ãåç)ä½ä¸ºä¸ä¸ªå¯¹è±¡æ¥ç»å¶ãå¨java.awt.geomå
ä¸å£°æçä¸ç³»åç±»ï¼åå«ç¨äºå建åç§èº«ä½å¾å½¢å¯¹è±¡ã主è¦æï¼
ããLine2D线段类ï¼RoundRectangle2Dåè§ç©å½¢ç±»ï¼Ellipse2Dæ¤åç±»ï¼Arc2Då弧类ï¼QuadCurve2Däºæ¬¡æ²çº¿ç±»ï¼CubicCurve2Dä¸æ¬¡æ²çº¿ç±»ã
ããè¦ç¨Graphics2Dç±»çæ°æ¹æ³ç»ä¸ä¸ªå¾å½¢ãå
å¨éç»æ¹æ³paintComponent()æpaint()ä¸ï¼æåæ°å¯¹è±¡g强å¶è½¬æ¢æGraphics2D对象ï¼ç¶åï¼ç¨ä¸è¿°å¾å½¢ç±»æä¾çéææ¹æ³Double()å建该å¾å½¢ç对象ï¼æåï¼ä»¥å¾å½¢å¯¹è±¡ä¸ºåæ°è°ç¨Graphics2D对象çdraw()æ¹æ³ç»å¶è¿ä¸ªå¾å½¢ãä¾å¦ä»¥ä¸ä»£ç ç¨Graphics2Dçæ°æ¹æ³ç»å¶çº¿æ®µååè§ç©å½¢ï¼
ããGraphics2D g2d = (Graphics2D)g;//å°å¯¹è±¡gç±»åä»Graphics转æ¢æGraphics2D
ããLine2D line = new Line2D.Double(30.0,30.0,340.0,30.0);
ããg2d.draw(line);
ããRoundRectangle2D rRect = new RoundRectangle2D.Double(13.0,30.0,100.0,70.0,40.0,20.0);
ããg2d.draw(rRect);
ããä¹å¯ä»¥å
ç¨java.awt.geomå
æä¾çShape对象ï¼å¹¶ç¨å精度Floatåæ æå精度Doubleåæ å建Shape对象ï¼ç¶ååç¨draw()æ¹æ³ç»å¶ãä¾å¦ï¼ä»¥ä¸ä»£ç å
å建å弧对象ï¼ç¶åç»å¶å弧ï¼
ããShape arc = new Arc2D.Float(30,30,150,150,40,100,Arc2D.OPEN);
ããg2d.draw(arc)/ç»å¶åé¢å建çå¾å½¢å¯¹è±¡arc
温馨提示:答案为网友推荐,仅供参考