标题：graphics
JAVA
介绍java.awt 类 Graphicsjava.lang.Object  java.awt.Graphics
java.lang.Object java.awt.Graphics直接已知子类： DebugGraphics, Graphics2D
public abstract class Graphicsextends Object Graphics 类是所有图形上下文的抽象基类，允许应用程序可  以在组件（已经在各种设备上实现），以及闭屏图像上，进行绘制。
public abstract class Graphicsextends Object
Graphics 类是所有图形上下文的抽象基类，允许应用程序可以在组件（已经在各种设备上实现），以及闭屏图像上，进行绘制。 Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息。属性(1)  要在其上绘制的 Component 对象。 
(2)  呈现和剪贴坐标的转换原点。 
(3)  当前剪贴区。
(4)  当前颜色。 
(5)  当前字体。 
(6)  当前的逻辑像素操作函数（XOR 或 Paint）。 
(7)  当前 XOR 交替颜色（参见 setXORMode(java.awt.Color）。
坐标是无限细分的，并且位于输出设备的像素之间。绘制图形轮廓的操作是通过使用像素大小的画笔遍历像素间无限细分路径的操作，画笔从路径上的锚点向下和向右绘制。填充图形的操作是填充图形内部区域无限细分路径操作。呈现水平文本的操作是呈现字符字形完全位于基线坐标之上的上升部分。 
图形画笔从要遍历的路径向下和向右绘制。含义(1) 如果绘制一个覆盖给定矩形的图形，那么该图形与填充被相同矩形所限定的图形相比，在右侧和底边多占用一行像素。
(2) 如果沿着与一行文本基线相同的 y 坐标绘制一条水平线，那么除了文字的所有下降部分外，该线完全画在文本的下面。 
所有作为此 Graphics 对象方法的参数而出现的坐标，都是相对于调用该方法前的此 Graphics 对象转换原点的。      所有呈现操作仅修改当前剪贴区所限定区域内的像素，此剪贴区是由用户空间中的 Shape 指定的，并且通过使用 Graphics 对象的程序来控制。此用户剪贴区 被转换到设备空间中，并且与设备剪贴区 组合，后者是通过窗口可见性和设备范围定义的。用户剪贴区和设备剪贴区的组合定义了复合剪贴区，它确定了最终的剪贴区域。用户剪贴区不能由呈现系统修改，以反映得到的复合剪贴区。用户剪贴区只能通过 setClip 或 clipRect 方法更改。所有的绘制或写入都以当前的颜色、当前绘图模式和当前字体完成的。构造方法摘要protected Graphics()构造一个新的 Graphics 对象。此构造方法是用于图形上下文的默认构造方法。 
因为 Graphics 是一个抽象类，所以应用程序不能直接调用此构造方法。图形上下文从其他图形上下文获取，或者通过在组件上调用 getGraphics 来创建。方法摘要abstract  voidclearRect(int x, int y, int width, int height)
通过使用当前绘图表面的背景色进行填充来清除指定的矩形。abstract  voidclipRect(int x, int y, int width, int height)
将当前剪贴区与指定的矩形相交。abstract  voidcopyArea(int x, int y, int width, int height, int dx, int dy)
将组件的区域复制到由 dx 和 dy 指定的距离处。abstract  Graphicscreate()
创建一个新的 Graphics 对象，它是此 Graphics 对象的副本。Graphicscreate(int x, int y, int width, int height)
基于此 Graphics 对象创建一个新的 Graphics 对象，但是使用新的转换和剪贴区域。abstract  voiddispose()
释放此图形的上下文并释放它所使用的所有系统资源。voiddraw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的 3-D 突出显示边框。abstract  voiddrawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
绘制一个覆盖指定矩形的圆弧或椭圆弧边框。voiddrawBytes(byte[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定的 byte 数组给定的文本。voiddrawChars(char[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。abstract  booleandrawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
绘制指定图像中当前可用的图像。abstract  booleandrawImage(Image img, int x, int y, ImageObserver observer)
绘制指定图像中当前可用的图像。abstract  booleandrawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。abstract  booleandrawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。abstract  booleandrawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
绘制当前可用的指定图像的指定区域，动态地缩放图像使其符合目标绘制表面的指定区域。abstract  booleandrawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
绘制当前可用的指定图像的指定区域，动态地缩放图像使其符合目标绘制表面的指定区域。abstract  voiddrawLine(int x1, int y1, int x2, int y2)
在此图形上下文的坐标系统中，使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线。abstract  voiddrawOval(int x, int y, int width, int height)
绘制椭圆的边框。abstract  voiddrawPolygon(int[] xPoints, int[] yPoints, int nPoints)
绘制一个由 x 和 y 坐标数组定义的闭合多边形。voiddrawPolygon(Polygon p)
绘制由指定的 Polygon 对象定义的多边形边框。abstract  voiddrawPolyline(int[] xPoints, int[] yPoints, int nPoints)
绘制由 x 和 y 坐标数组定义的一系列连接线。voiddrawRect(int x, int y, int width, int height)
绘制指定矩形的边框。abstract  voiddrawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用此图形上下文的当前颜色绘制圆角矩形的边框。abstract  voiddrawString(AttributedCharacterIterator iterator, int x, int y)
使用此图形上下文的当前颜色绘制由指定迭代器给定的文本。abstract  voiddrawString(String str, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。voidfill3DRect(int x, int y, int width, int height, boolean raised)
绘制一个用当前颜色填充的 3-D 突出显示矩形。abstract  voidfillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
填充覆盖指定矩形的圆弧或椭圆弧。abstract  voidfillOval(int x, int y, int width, int height)
使用当前颜色填充外接指定矩形框的椭圆。abstract  voidfillPolygon(int[] xPoints, int[] yPoints, int nPoints)
填充由 x 和 y 坐标数组定义的闭合多边形。voidfillPolygon(Polygon p)
用图形上下文的当前颜色填充由指定的 Polygon 对象定义的多边形。abstract  voidfillRect(int x, int y, int width, int height)
填充指定的矩形。abstract  voidfillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用当前颜色填充指定的圆角矩形。voidfinalize()
一旦不再引用此图形上下文就释放它。abstract  ShapegetClip()
获取当前的剪贴区域。abstract  RectanglegetClipBounds()
返回当前剪贴区域的边界矩形。RectanglegetClipBounds(Rectangle r)
返回当前剪贴区域的边界矩形。RectanglegetClipRect()
已过时。 从 JDK version 1.1 开始，由 getClipBounds() 取代。abstract  ColorgetColor()
获取此图形上下文的当前颜色。abstract  FontgetFont()
获取当前字体。FontMetricsgetFontMetrics()
获取当前字体的字体规格。abstract  FontMetricsgetFontMetrics(Font f)
获取指定字体的字体规格。booleanhitClip(int x, int y, int width, int height)
如果指定的矩形区域与当前的剪贴区域相交，则返回 true。abstract  voidsetClip(int x, int y, int width, int height)
将当前的剪贴区设置为由给定坐标指定的矩形。abstract  voidsetClip(Shape clip)
将当前的剪贴区域设置为任意的剪贴形状。abstract  voidsetColor(Color c)
将此图形上下文的当前颜色设置为指定颜色。abstract  voidsetFont(Font font)
将此图形上下文的字体设置为指定字体。abstract  voidsetPaintMode()
设置将此图形上下文的绘图模式，以便通过此图形上下文中的当前颜色来改写目标。abstract  voidsetXORMode(Color c1)
将此图形下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。StringtoString()
返回表示此 Graphics 对象值的 String 对象。abstract  voidtranslate(int x, int y)
将图形上下文的原点平移到当前坐标系统中的点 (x, y)。
C#
方法命名空间：System.Drawing
程序集：System.Drawing（在system.drawing.dll 中）
封装一个GDI+绘图图面。无法继承此类。用法public sealed class Graphics : MarshalByRefObject, IDeviceContext, IDisposable
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);//画笔System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);//画刷System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillEllipse(myBrush, new Rectangle(0,0,100,200));//画实心椭圆
formGraphics.DrawEllipse(myPen, new Rectangle(0,0,100,200));//空心圆
formGraphics.FillRectangle(myBrush, new Rectangle(0,0,100,200));//画实心方
formGraphics.DrawRectangle(myPen, new Rectangle(0,0,100,200));//空心矩形
formGraphics.DrawLine(myPen, 0, 0, 200, 200);//画线
formGraphics.DrawPie(myPen,90,80,140,40,120,100); //画馅饼图形//画多边形
formGraphics.DrawPolygon(myPen,new Point[]{ new Point(30,140), new Point(270,250), new Point(110,240), new Point (200,170), new Point(70,350), new Point(50,200)}); //清理使用的资源myPen.Dispose(); myBrush.Dispose(); formGraphics.Dispose();
使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像，所用到的属性和方法如表所示。
as3 绘图类Graphics
Flash中的绘图是通过Graphics类实现的，Graphics类直接继承Object类，有两种绘图方法，一是定义绘图样式的方法；一种是用于绘制和清除图形的方法。
Graphics类有关样式的方法包括线条样式和填充样式两类。如下表：
Graphics类的绘图样式方法
方法名说明lineStyle定义线条样式lineGradientStyle定义渐变线条样式beginFill定义固体填充样式beginGradientFill定义渐变填充样式beginBitmapFill定义位图填充endFill结束填充方法Graphics类的绘制图形方法
方法名说明moveTo定义绘制线条的起点lineTo定义绘制线条的终点curveTo绘制曲线drawCircle绘制圆形drawEllipse绘制椭圆drawRect绘制矩形drawRoundRect绘制圆角矩形Clear清除绘图Graphics类不允许用户来创建实例，要使用Graphics类的方法，要借助于Shape类和Sprite类的实例，这些实例具有graphics属性，graphics属性是Graphics类的实例，通过graphics属性就可以调用绘图的方法。
显示实例名. graphics.lineStyle()
我们经常使用Shape类来绘制图形，因为Shape类只有graphics属性和构造方法，所以使用Shape类来绘制图形的效率会更高。当需要图形的交互功能时，可以考虑使用Sprite类和MovieClip类。
绘制曲线可以使用curveTo()方法，curveTo()方法带有4个参数，即controlx，controly，anchorx，anchory。其中，controlx和controly是控制点的坐标，anchorx和anchory是终点坐标，起点坐标可由moveTo方法指定。用curveTo()方法的关键是控制点的确定，控制点相当于曲线起始点和终点切线的交点。
绘制填充图形只需了解绘图方法的参数。在填充绘图时，如果填充结束时，需要调用endFill方法表示结束填充。除了使用纯色填充外，还可以使用渐变填充和位图填充。