`
talentluke
  • 浏览: 601747 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Graphics类绘图

 
阅读更多

关于Graphics类的一个结论:Graphics类是所有图形上下文(Graphic context)的抽象基类,因此它是不能直接实例化的,那么为了使用Graphics类绘图,就必须创建其非抽象的子类。
那么我们又如何在这个子类中实现Graphics类(Graphics中定义了很多抽象方法)中的抽象方法呢?
要用这些方法来实现在特定的组件及设备上绘图,而又不能用Graphics类(因为它无法被实例化),怎么做呢?没有办法。甚至连现有的Graphics类的子类也不会用。但我们知道Applet、Canvas、Frame等很多组件类都继承并重载了repaint()方法,而轻量级的repaint()方法又会调用paint(Graphics g)方法。这样,我们通过继承这些组件类,重写其中的paint方法(因为这个方法提供了Graphics类的子类的实例),在这个方法体中完成我们在对应组件上的绘图意图,然后在外部调用repaint()方法(因为它不需要Graphics参数,我们恰恰也不知道怎么创建一个有用的Graphics类的子类及其实例),就可以实现绘图了。
概括起来讲就是:找到一个带有(Graphics g)参数的现有方法和一个自动调用该方法而不带有(Graphics g)参数的现有方法,覆盖前一个方法,在外部调用后一个方法,从而实现绘图目的。
最常见、常用的是paint,paintGraphics和repaint。

 

获取Graphics实例Graphics g = this.getGraphics();

 

 

用java swing画图

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import java.beans.*;

 

public class Yuan{

     public static void main(String[] args) 
     {
         MyFrame my=new MyFrame();   
         my.setVisible(true);   显示
     }
}
class MyFrame extends javax.swing.JFrame
{
    MyFrame()
    {
       this.setTitle("变色圆圈");
       this.setSize(500,500); // 窗体的大小
       mp=new Mypanel();   //实例化一个panel
       this.add(mp);    //加载panel
       clock.start();   
       this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
    }
    private Mypanel mp;
    javax.swing.Timer clock=new javax.swing.Timer(1000,new ActionListener(){
        public void actionPerformed(ActionEvent e)
        {
            mp.repaint();
        }
    });
}
class Mypanel extends javax.swing.JPanel
{
    public   void paintComponent(Graphics g)    //   g是个参数,用g调用Graphics里的方法
    {
        int begin,end;
        begin=0;

        while(begin!=360)
        {
                                                        //Color(int, int, int) 
                                                       //用指定的红、绿和兰色成分创建一个颜色。
          Color c=new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255));
          g.setColor(Color.red);
                                                                //drawArc(int, int, int, int, int, int) 
                                                                  //绘制一个覆盖指定矩形的圆或椭圆弧的轮廓
          g.drawArc(150,150,200,200,begin,36);
          g.setColor(c);
//fillArc(int, int, int, int, int, int) 
                                      //填充一个覆盖了指定矩形的圆或椭圆弧。
          g.fillArc(150,150,200,200,begin,36);
          begin+=36;
        } 
    }
}

 

绘图板源代码参考 http://www.linuxidc.com/Linux/2011-11/46623p2.htm

分享到:
评论

相关推荐

    Java中Graphics2D类的绘图属性.pdf

    它扩展了Graphics类,提供了更多的绘图属性和方法,使得开发者能够进行更精细的图形控制。在Java中,Graphics2D类的绘图属性主要包括stroke属性、paint属性、transform属性、clip属性和composit属性。下面我们将详细...

    C# 画图程序 用到了graphics类

    首先,`Graphics`类是`System.Drawing`命名空间中的核心类,它提供了基本的绘图操作,如绘制线条、填充形状、绘制文本等。在C#中,我们通常通过控件(如PictureBox或Form)的`CreateGraphics()`方法获取一个`...

    利用Graphics类绘制直线的简单案例

    本文将深入探讨如何使用C#中的`Graphics`类来绘制直线,这对于理解GDI(Graphics Device Interface)绘图技术至关重要,特别是对于初学者来说,这是一个很好的学习起点。 `Graphics`类是.NET框架中System.Drawing...

    Graphics32 for Delphi绘图,支持多个Delphi版本

    Graphics32是一个强大的开源图形库,专为Delphi编程环境设计,它提供了高效、高性能的2D绘图功能。这个库特别适用于需要处理大量图像数据或实时图形渲染的应用,如游戏开发、图像处理软件和科学可视化工具。在...

    Starling Graphics extension 绘图API 扩展

    Starling Graphics扩展是针对Starling框架的一个重要组件,它提供了丰富的绘图API,极大地增强了在移动设备上进行2D图形渲染的能力。Starling是一个高效、跨平台的ActionScript 3库,专门设计用于游戏开发,它利用...

    C#自动打印+Graphics自动画表格填变量+ ZXing产生

    开发者需要创建一个PrintDocument对象,设置其PrintPage事件的处理程序,在该事件中完成实际的绘图操作,包括调用Graphics的绘图方法。用户触发打印时,PrintDocument的Print方法会被调用,从而将绘图内容发送到...

    c# 绘图程序 通过简单的Graphics绘制图形

    在本篇中,我们将深入探讨如何使用C#进行绘图,以及`Graphics`类的关键特性。 首先,`Graphics`类是`System.Drawing`中的核心组件,它代表了一个输出设备,如屏幕或打印机,用于呈现图形和文本。要使用`Graphics`...

    C# 之绘图Graphics类学习,GUI,12个绘图项目供学习

    本教程将深入探讨`Graphics`类的基本用法以及通过12个具体的绘图项目来加深理解。 1. `Graphics`类的创建与获取: - 在Windows Forms中,可以通过控件的`CreateGraphics()`方法获取到`Graphics`对象,例如`...

    Image生成示例,Graphics绘图,验证码绘图

    3. **Graphics类**:`Graphics`是绘图的核心。你可以通过`Graphics.FromImage`方法获取到一个`Graphics`对象,然后调用它的各种方法进行绘图,如`DrawLine`、`FillRectangle`等。例如,绘制一条线: ```csharp Pen ...

    CSharp 4.0 .Net Framework V4.0 Graphics 类

    C#中的`Graphics`类是.NET Framework 4.0中的一部分,它封装了GDI+(Graphics Device Interface Plus)的绘图功能。这个类主要用于在屏幕上或者各种图形设备上进行图形绘制,包括线条、曲线、矩形、椭圆、文本等。`...

    Graphics 与 repaint 方法

    Graphics 是一个抽象类,提供了基本的绘图方法,如画直线、曲线等,而 repaint 方法则是用于触发图形组件的重绘。 repaint 方法是一个重要的概念,它是在图形线程后追加一段重绘操作,是安全的!是系统真正调用的...

    xenon-linear-shape_c#graphics类_

    在C#中,`Graphics`对象是从`Graphics`类实例化的,它代表了特定设备上的一个绘图表面,比如屏幕、打印机或图像。以下是一些关于如何使用`Graphics`类进行图形绘制的重要知识点: 1. **创建Graphics对象**: 通常,`...

    QT 整理的Graphics View 的一些例子

    例如,你可以创建一个Graphics Scene来显示一个复杂的绘图,其中包含多个图形元素,如矩形、椭圆、线条等。 2. **QGraphicsItem**: 这是Graphics View框架中的基本图形类,可以表示任何可视化的2D对象。你可以...

    c# 使用Graphics画线实例

    在C#编程中,`Graphics`类是.NET框架中用于图形绘制的核心类,它提供了丰富的功能,让我们可以在各种图形设备上进行绘制操作,比如屏幕、打印机或者图像文件。本实例将详细讲解如何使用C#的`Graphics`类来实现简单的...

    Graphics 绘图示例

    在C#编程环境中,`Graphics`类是System.Drawing命名空间中的核心组件,用于在各种图形设备上进行绘制操作,如屏幕、打印机或者图像文件。这个`Graphics 绘图示例`可能包含了一系列的代码示例,展示了如何使用C#进行...

    scorpio_alpha_450x450_c#graphics类_

    在C#编程中,`Graphics`类是System.Drawing命名空间中的一...这通常涉及到使用`Image`类加载PNG文件,然后使用`Graphics`对象的`DrawImage()`方法进行显示,同时确保`Graphics`对象的混合模式和绘图质量适合透明图像。

    xenon-flash-operation_c#graphics类_

    当我们需要在控制台、窗体或者图像上进行绘图时,`Graphics`类提供了丰富的API来实现这些需求。 `Graphics`类通常与`Bitmap`类结合使用,允许我们在图片上绘制线条、形状、文本以及其它图形元素。例如,在`xenon-...

    在winforms使用Graphics画表格

    1. **Graphics类与绘图基础** `System.Drawing.Graphics`是.NET Framework提供的类,用于在各种图形设备上进行绘制,包括屏幕、打印机和图像。它提供了丰富的绘图方法,如`DrawLine`、`FillRectangle`和`DrawString...

    QT Graphics View绘图框架应用程序示例

    创建一个实例samp8_4是一个以QMainWindow为基类的窗口程序,实例程序samp8_4的主要功能... 这个实例演示了Graphics View绘图几个类的基本使用方法,演示视图、场景和绘图项3个坐标系的关系,以及它们之间的坐标转换。

    sae_star_512_c#graphics类_

    `Graphics`类是`System.Drawing`命名空间的一部分,它提供了一系列方法和属性,如`DrawLine`、`DrawRectangle`、`DrawImage`、`FillPolygon`等,使得开发者能够直接在屏幕、打印机或其他图形设备上进行绘图操作。...

Global site tag (gtag.js) - Google Analytics