精华内容
下载资源
问答
  • VS2017无法打开graphics.h解决方法

    千次阅读 2020-05-23 21:16:20
    3.此时再看程序,发现还是无法打开graphics.h,此时刷新一下程序即可。 4.在这个程序中,我在头文件中还加了一个amp_graphics.h,导致我的getmaxx和getmaxy都无法识别标识符,此时把这个无用的头文件删除即可。 ...

    1.下载EasyX: https://easyx.cn/

    2.然后点击安装,我的easyx的安装目录是自动到vs2017的conclude目录下的,所以不需要在移动文件了

    3.此时再看程序,发现还是无法打开graphics.h,此时刷新一下程序即可。

    4.在这个程序中,我在头文件中还加了一个amp_graphics.h,导致我的getmaxx和getmaxy都无法识别标识符,此时把这个无用的头文件删除即可。

    展开全文
  • #include <graphics.h> #include #include #include #include void draw_circul(int x,int y,int row,int col); int init_system(); void draw_mode(int x,int y,int wm_wh,int type); void draw_...

    遇到此类问题,证明所在的IDE 编译环境中没有相应的头文件,因此,我们要从网上下载这个头文件!
    下面介绍这个过程:
    https://www.easyx.cn/downloads/首先到这个网站下载最新版本的EASY -X,然后点击执行这个文件
    在这里插入图片描述
    点击安装的过程,电脑上如果正在运行杀毒软件的话,要先退出,要不然,360等会将其视为病毒处理!
    当点击安装完成后,我们试着写一段代码运行
    // GUI.cpp : 定义控制台应用程序的入口点。
    #include “stdafx.h”
    #include <graphics.h>
    #include <conio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>

    void draw_circul(int x,int y,int row,int col);
    int init_system();
    void draw_mode(int x,int y,int wm_wh,int type);
    void draw_framework();
    void set_mine(int num);
    void draw_min_max_framework(int x1,int y1,int x2,int y2);
    void draw_happyface(int type);
    void draw_clock_score();
    void draw_mine(int row,int col);
    void mouse_clear_mine();
    void round_mine_num();
    int deal_space(int x, int y);
    void deal_situation(int y,int x);
    void output_num();
    void show_space(int y,int x);
    void show_num(int y,int x);
    #define FLAG 20
    #define win m_colm_row
    #define mine_num 20 //雷的数目
    int m_maxx,m_maxy;
    int m_row,m_col,m_wh;
    int x0,y0,num=0;
    int p;
    int main(void)
    {
    init_system(); //初始化系统
    if(!init_system())
    exit(0);
    x0=(m_maxx-m_col
    (m_wh+1))/2;
    y0=(m_maxy-m_row
    (m_wh+1))/2;
    draw_circul(x0,y0,m_row,m_col); //初始化界面
    draw_framework(); //框架
    set_mine(mine_num); //布雷
    round_mine_num(); //计算周围雷数
    mouse_clear_mine(); //鼠标清雷
    getch();
    closegraph();
    return 0;
    }
    //鼠标清雷
    void mouse_clear_mine()
    {
    MOUSEMSG m;
    m=GetMouseMsg();
    int x,y;
    while(1)
    {
    m=GetMouseMsg();
    x=(m.x-x0)/(m_wh+1);
    y=(m.y-y0)/(m_wh+1);
    switch(m.uMsg)
    {
    case WM_LBUTTONDOWN:
    {
    if (x0<m.x && m.x<((m_wh+1)m_col+x0) && m.y>y0 && m.y<(y0+(m_wh+1)m_row) && p[y][x]<8 && p[y][x]>-3)
    {
    if (p[y][x]-1)
    {
    draw_happyface(2);
    for (int j=0;j<m_col;j++)
    for (int i=0;i<m_row;i++)
    {
    if (p[i][j]
    -1)
    draw_mine(j,i);
    p[i][j]+=FLAG;
    }
    setlinecolor(RED);
    line(x0+x
    (m_wh+1)+2,y0+y
    (m_wh+1)+2,x0+(x+1)
    (m_wh+1)-2,y0+(y+1)(m_wh+1)-2);
    line(x0+(x+1)
    (m_wh+1)-2,y0+y*(m_wh+1)+2,x0+x*(m_wh+1)+2,y0+(y+1)*(m_wh+1)-2);

                    }
                    if (p[y][x]==0)
                    {
                        show_space(y,x);
                    }
                    if(p[y][x]>0 && p[y][x]<9) 
                    {
                        show_num(y,x);
                    } 
                }
                else if (m.x>m_maxx/2-m_wh-5 && m.x<m_maxx/2+m_wh+5 && m.y>y0-m_wh*5/2-5 && m.y<y0-m_wh/2+5) 
                {
                    draw_mode(m_maxx/2-m_wh-5,y0-m_wh*5/2-5,2*m_wh+10,1);
                    Sleep(20);
                    main();
                }
                else if (num==win)
                {
                    exit(1);
                }
                else 
                {
                    ;
                }
            }break;
            case WM_RBUTTONDOWN:
                {
                    if (x0<m.x && m.x<((m_wh+1)*m_col+x0) && m.y>y0 && m.y<(y0+(m_wh+1)*m_row))
                    {
                        if (p[y][x]>15 || p[y][x]==-2)
                        {
                            ;
                        }
                        else if (p[y][x]<-10)
                        {
                            draw_mode(x0+(m_wh+1)*x,y0+(m_wh+1)*y,m_wh,1);
                            p[y][x]+=FLAG;
                        }
                        else
                        {
                            setlinecolor(RED);
                            line(x0+(m_wh+1)*x+3,y0+(m_wh+1)*y+3,x0+(m_wh+1)*x+3,y0+(m_wh+1)*(y+1)-6);
                            rectangle(x0+(m_wh+1)*x+3,y0+(m_wh+1)*y+3,x0+(m_wh+1)*(x+1)-8,y0+(m_wh+1)*y+8);
                            setfillstyle(SOLID_FILL);
                            setfillcolor(RED);
                            floodfill(x0+(m_wh+1)*x+4,y0+(m_wh+1)*y+4,RED);
                            p[y][x]-=FLAG;
                        }
                    }
                    else
                    {
                        ;
                    }
                }break; 
        }
    }
    

    }

    void show_space(int y,int x)
    {
    if(y>=0 && y<m_row && x>=0 && x<m_col && p[y][x]==0)
    {
    draw_mode(x0+x*(m_wh+1),y0+y*(m_wh+1),m_wh,2);
    p[y][x]+=FLAG;
    num++;
    show_space(y-1,x);
    show_space(y,x-1);
    show_space(y+1,x);
    show_space(y,x+1);
    }
    if(y>=0 && y<m_row && x>=0 && x<m_col && p[y][x]>0 && p[y][x]<=8)
    {
    show_num(y,x);
    num++;
    }
    }

    void show_num(int y,int x)
    {
    draw_mode(x0+x*(m_wh+1),y0+y*(m_wh+1),m_wh,2);
    if (p[y][x]==1)
    settextcolor(RED);
    if (p[y][x]==2)
    settextcolor(GREEN);
    if (p[y][x]==3)
    settextcolor(BLUE);
    if (p[y][x]==4)
    settextcolor(YELLOW);
    if (p[y][x]==5)
    settextcolor(BROWN);
    if (p[y][x]==6)
    settextcolor(RED);
    if (p[y][x]==7)
    settextcolor(GREEN);
    if (p[y][x]==8)
    settextcolor(BLUE);
    setbkmode(TRANSPARENT);
    outtextxy(x0+x*(m_wh+1)+m_wh/3,y0+y*(m_wh+1)+m_wh/8,p[y][x]+48);
    p[y][x]+=FLAG;
    }
    //布雷
    void set_mine(int num)
    {
    int k,i,j;
    int m=0;

    srand((unsigned)time(NULL));
    while(m<num)
    {
        k=rand()%(m_row*m_col);
        j=k%m_col;
        i=k/m_col;
        if(p[i][j]!=-1)
        {   
            p[i][j]=-1;
            m++;
        }
    }
    

    }
    //显示雷数
    void round_mine_num()
    {
    int i,j;
    for (i=0;i<m_row;i++)
    for (j=0;j<m_col;j++)
    {
    if (j<m_col-1 && i<m_row-1 && p[i][j]-1 && p[i+1][j+1]!=-1)
    p[i+1][j+1]++;
    if (i<m_row-1 && p[i][j]
    -1 && p[i+1][j]!=-1)
    p[i+1][j]++;
    if (i<m_row-1 && j>0 && p[i][j]-1 && p[i+1][j-1]!=-1)
    p[i+1][j-1]++;
    if (j>0 && p[i][j]
    -1 && p[i][j-1]!=-1)
    p[i][j-1]++;
    if (i>0 && j>0 && p[i][j]-1 && p[i-1][j-1]!=-1)
    p[i-1][j-1]++;
    if (i>0 && p[i][j]
    -1 && p[i-1][j]!=-1)
    p[i-1][j]++;
    if (i>0 && j<m_col-1 && p[i][j]-1 && p[i-1][j+1]!=-1)
    p[i-1][j+1]++;
    if (j<m_col-1 && p[i][j]
    -1 && p[i][j+1]!=-1)
    p[i][j+1]++;
    }
    }
    //画一个雷
    void draw_mine(int col,int row)
    {
    draw_mode(x0+col*(m_wh+1),y0+row*(m_wh+1),m_wh,2);

    setcolor(BLACK);
    circle(x0+m_wh/2+col*(m_wh+1),y0+m_wh/2+row*(m_wh+1),5);
    setfillstyle(SOLID_FILL);
    setfillcolor(BLACK);
    floodfill(x0+m_wh/2+col*(m_wh+1),y0+m_wh/2+row*(m_wh+1),BLACK);
    

    }
    //画界面模式
    void draw_mode(int x,int y,int wm_wh,int type)
    {
    if (type==1)
    {
    setcolor(WHITE);
    rectangle(x,y,x+wm_wh,y+wm_wh);
    setfillstyle(SOLID_FILL);
    setfillcolor(LIGHTGRAY);
    floodfill((x+x+wm_wh)/2,(y+y+wm_wh)/2,WHITE);

        setlinecolor(WHITE);
        line(x,y,x+wm_wh,y);
        line(x,y,x,y+wm_wh);
        setlinecolor(DARKGRAY);
        line(x+wm_wh,y,x+wm_wh,y+wm_wh);
        line(x,y+wm_wh,x+wm_wh,y+wm_wh);
    
        setlinecolor(WHITE);
        line(x+1,y+1,x+wm_wh-1,y+1);
        line(x+1,y+1,x+1,y+wm_wh-1);
        setlinecolor(DARKGRAY);
        line(x+wm_wh-1,y+1,x+wm_wh-1,y+wm_wh-1);
        line(x+1,y+wm_wh-1,x+wm_wh-1,y+wm_wh-1);
    }
    else
    {
        setcolor(WHITE);
        rectangle(x,y,x+m_wh,y+m_wh);
        setfillstyle(SOLID_FILL);
        setfillcolor(LIGHTGRAY);
        floodfill((x+x+m_wh)/2,(y+y+m_wh)/2,WHITE);
    
        setlinecolor(DARKGRAY);
        line(x,y,x+m_wh,y);
        line(x,y,x,y+m_wh);
        setlinecolor(WHITE);
        line(x+m_wh,y,x+m_wh,y+m_wh);
        line(x,y+m_wh,x+m_wh,y+m_wh);
    }
    

    }
    //画整个雷区界面
    void draw_circul(int x,int y,int row,int col)
    {
    int i,j;
    for (i=0;i<row;i++)
    {
    x=(m_maxx-m_col*(m_wh+1))/2;
    for (j=0;j<col;j++)
    {
    draw_mode(x,y,m_wh,1);
    x+=m_wh+1;
    }
    y+=m_wh+1;
    }
    }
    //画外围框架界面
    void draw_framework()
    {
    int x1,y1,x2,y2;
    x1=x0-m_wh;
    y1=y0-3m_wh;
    x2=x0+(m_col
    (m_wh+1))+m_wh;
    y2=y0+(m_row*(m_wh+1))+m_wh;

    draw_min_max_framework(x1,y1,x2,y2);
    draw_happyface(1);
    draw_clock_score();
    

    }
    //大框小框
    void draw_min_max_framework(int x1,int y1,int x2,int y2)
    {
    setlinecolor(WHITE);
    rectangle(x0,y0,x0+m_col*(m_wh+1),y0+m_row*(m_wh+1));
    setlinecolor(WHITE);
    rectangle(x1,y1,x2,y2);
    setfillstyle(SOLID_FILL);
    setfillcolor(LIGHTGRAY);
    floodfill(x1+2,y1+2,WHITE);
    }
    //笑脸
    void draw_happyface(int type)
    {
    draw_mode(m_maxx/2-m_wh-5,y0-m_wh5/2-5,2m_wh+10,1);

    setlinecolor(RED);  
    circle(m_maxx/2,y0-m_wh*3/2,m_wh);
    setfillstyle(BS_SOLID);
    setfillcolor(YELLOW);
    floodfill(m_maxx/2,y0-m_wh*3/2,RED);
    
    setlinecolor(BLACK);
    circle(m_maxx/2-m_wh/2,y0-2*m_wh+2,2);
    setfillstyle(BS_SOLID);
    setfillcolor(BLACK);
    floodfill(m_maxx/2-m_wh/2,y0-2*m_wh+2,BLACK);
    circle(m_maxx/2+m_wh/2,y0-2*m_wh+2,2);
    floodfill(m_maxx/2+m_wh/2,y0-2*m_wh+2,BLACK);
    setlinecolor(RED);  
    
    if (type==1)
        arc(m_maxx/2-m_wh/2,y0-m_wh*2,m_maxx/2+m_wh/2,y0-m_wh,3.4,6);
    else
    {
        arc(m_maxx/2-m_wh/2,y0-m_wh*3/2+2,m_maxx/2+m_wh/2,y0-m_wh/2+2,0.3,2.85);
    }
    

    }
    //时钟和计时器
    void draw_clock_score()
    {
    setlinecolor(WHITE);
    rectangle(x0,y0-2m_wh,x0+3m_wh,y0-m_wh);
    setlinecolor(DARKGRAY);
    line(x0,y0-2m_wh,x0+3m_wh,y0-2m_wh);
    line(x0,y0-2
    m_wh,x0,y0-m_wh);

    setlinecolor(WHITE);
    rectangle(x0+(m_col-3)*(m_wh+1),y0-2*m_wh,x0+m_col*(m_wh+1),y0-m_wh);
    setlinecolor(DARKGRAY);
    line(x0+(m_col-3)*(m_wh+1),y0-2*m_wh,x0+(m_col-3)*(m_wh+1),y0-m_wh);
    line(x0+(m_col-3)*(m_wh+1),y0-2*m_wh,x0+m_col*(m_wh+1),y0-2*m_wh);
    

    }
    //初始化系统
    int init_system()
    {
    int gdriver=DETECT,gmode;
    initgraph(&gdriver,&gmode," ");

    m_maxx=getmaxx();
    m_maxy=getmaxy();
    m_row=10;
    m_col=15;
    m_wh=20;
    
    int  i,j;
    p=(int **)malloc(sizeof(int *)*m_row);
    if (!p)
      return 0;
    for(i=0;i<m_row;i++)
    {
        p[i]=(int *)malloc(sizeof(int)*m_col);
        if(!p[i])
          return 0;
    }
    
    for (i=0;i<m_row;i++)
        for (j=0;j<m_col;j++)
            p[i][j]=0;
    return 1;
    

    }
    在这里插入图片描述
    运行结果没报错,证明成功!希望对你有帮助。

    展开全文
  • 但是在Debug x64模式下无法打开graphics.h”文件。 ![图片说明](https://img-ask.csdn.net/upload/202005/06/1588758754_20919.png) ![图片说明]...
  • 无法打开包括文件:“graphics.h”: No such file or directory” 缺少的文件下载地址:https://easyx.cn/ EasyX库(附带graphics.h) 2021 版 (2021-1-15 更新) 该版本支持 VS2019 下载自动安装支持的版本即可。...

    VS2019 编译一个C++小游戏,导入项目后,发现VS一直提示
    “无法打开包括文件:“graphics.h”: No such file or directory”

    缺少的文件下载地址:https://easyx.cn/

    EasyX库(附带graphics.h) 2021 版 (2021-1-15 更新)

    该版本支持 VS2019 下载自动安装支持的版本即可。泰山老父友情提示:建议先关闭VS再安装。

     

    展开全文
  • Graphics2D

    千次阅读 2016-11-16 22:50:41
    java.awt 类 Graphics2D java.lang.Object java.awt.Graphics java.awt.Graphics2D ...public abstract class ...此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为

    java.awt
    类 Graphics2D

    java.lang.Object
      java.awt.Graphics
          java.awt.Graphics2D
    

    public abstract class Graphics2D
    extends Graphics

    此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。

    坐标空间

    所有传递到 Graphics2D 对象的坐标都在一个与设备无关并且名为用户空间的坐标系中指定,用户空间由应用程序使用。Graphics2D 对象包含一个 AffineTransform 对象作为其呈现状态的一部分,后者定义了如何将坐标从用户空间转换到设备空间中与设备有关的坐标。

    设备空间中的坐标通常是指单个设备像素,并根据这些像素之间无限小的间距对齐。某些 Graphics2D 对象可用于捕获对存储器的呈现操作并存入图形元文件,以后可在未知物理分辨率的具体设备上重放。由于在捕获呈现操作时分辨率可能未知,所以 Graphics2D Transform 的设置可将用户坐标转换为虚拟设备空间,该设备空间与目标设备的预期分辨率接近。如果估计值不正确,则在重放时可能需要进一步转换。

    某些由呈现属性对象执行的操作发生在设备空间中,但所有 Graphics2D 方法都采用用户空间坐标。

    每个 Graphics2D 对象都与一个定义呈现位置的目标关联。GraphicsConfiguration 对象定义呈现目标的特征,如像素格式和分辨率。在 Graphics2D 对象的整个生命周期中都使用相同的呈现目标。

    创建 Graphics2D 对象时,GraphicsConfiguration 将为 Graphics2D 的目标(Component 或 Image)指定默认转换,此默认转换将用户空间坐标系映射到屏幕和打印机设备坐标,使原点映射到设备目标区域的左上角,并将 X 坐标轴向右方延伸,将 Y 坐标轴向下方延伸。对于接近 72 dpi 的设备(例如屏幕设备),默认转换的缩放比例设置为 1:1。对于高分辨率设备(例如打印机),默认转换的缩放比例设置为每平方英寸大约 72 个用户空间坐标。对于图像缓冲区,默认转换为 Identity 转换。

    呈现过程

    呈现过程可以分为四个阶段,这四个阶段由 Graphics2D 呈现属性控制。呈现器可以优化当中的许多步骤:可以缓存结果以用于未来调用;可以将多个虚拟步骤合成一个操作;可以将多种属性识别为共用的简单情况(可以通过修改操作的其他部分来消除各种属性间的差别)。

    呈现过程中的步骤有:

    1. 确定呈现内容。
    2. 将呈现操作限制在当前 Clip。 Clip 由用户空间中的 Shape 指定,由使用 Graphics 和 Graphics2D 中各种 clip 操作方法的程序控制。此用户剪贴区 由当前 Transform 转换到设备空间中,并与设备剪贴区 合并,后者是通过窗口可见性和设备范围定义的。用户剪贴区和设备剪贴区的组合定义复合剪贴区,复合剪贴区确定最终的剪贴区域。呈现系统不能修改用户剪贴区来反映得到的复合剪贴区。
    3. 确定呈现的颜色。
    4. 使用 Graphics2D 上下文中当前的 Composite 属性将颜色应用于目标绘图面。

    三种类型的呈现操作,以及各自特殊呈现过程的细节如下:
    1. Shape 操作
      1. 如果该操作为 draw(Shape) 操作,则 Graphics2D 上下文中当前 Stroke 属性上的 createStrokedShape 方法将用于构造包含指定 Shape 轮廓的新 Shape 对象。
      2. 使用 Graphics2D 上下文中的当前 Transform 将 Shape 从用户空间转换到设备空间。
      3. Shape 的轮廓是通过使用 Shape 的 getPathIterator 方法提取的,该方法返回一个沿着 Shape 边界迭代得到的 PathIterator 对象。
      4. 如果 Graphics2D 对象无法处理 PathIterator 对象返回的曲线段,则可以调用 Shape 的 getPathIterator 替代方法,该方法可使 Shape 变得平滑。
      5. 对于 PaintContext,需要 Graphics2D 上下文中的当前 Paint,它指定了在设备空间中呈现的颜色。
    2. 文本操作
      1. 以下步骤用于确定呈现指定 String 所需的字形集:
        1. 如果参数是 String,则要求 Graphics2D 上下文中的当前 Font 将 String 中的 Unicode 字符转换为一个字形集,以表现 Font 实现的基本布局和成形算法。
        2. 如果参数是 AttributedCharacterIterator,则要求迭代器使用其内嵌的字体属性将其自身转换为 TextLayout。TextLayout 实现更为复杂的字形布局算法,用于为不同书写方向的多种字体自动执行 Unicode 双方向布局调整。
        3. 如果参数是 GlyphVector,则 GlyphVector 对象已经包含了特定于字体的合适字形代码和每个字形位置的显式坐标。
      2. 查询当前的 Font 以获取指定字形的轮廓。这些轮廓被视为用户空间中相对于步骤 1 中确定的每个字形位置的形状。
      3. 字符轮廓按上面 Shape 操作下指示的方式填充。
      4. 查询当前 PaintContext 以获取 Paint,Paint 指定了设备空间中呈现的颜色。
    3. Image 操作
      1. 感兴趣区域由源 Image 的边界框定义。此边界框在图像空间中指定,该空间即 Image 对象的本地坐标系。
      2. 如果 AffineTransform 被传递到 drawImage(Image, AffineTransform, ImageObserver),则使用 AffineTransform 将边界框从图像空间转换到用户空间。如果未提供 AffineTransform,则认为边界框已存在于用户空间中。
      3. 使用当前 Transform 将 Image 的边界框从用户空间转换到设备空间。注意,转换边界框的结果不一定会得到设备空间中的矩形区域。
      4. Image 对象确定要呈现的颜色,并根据当前 Transform 和可选图像转换所指定的源到目标坐标映射关系进行采样。

    默认呈现属性

    Graphics2D 呈现属性的默认值有:
    Paint
    Component 的颜色。
    Font
    Component 的 Font
    Stroke
    线宽为 1 的方形画笔,没有虚线、斜角线段接合和方形端点。
    Transform
    用于 Component 的 GraphicsConfiguration 的 getDefaultTransform。
    Composite
    AlphaComposite.SRC_OVER 规则。
    Clip
    不呈现 Clip,输出局限于 Component

    呈现兼容性问题

    JDK(tm) 1.1 呈现模型是基于像素化的模型,该模型的坐标无限细分,且位于像素之间。使用一个一像素宽的画笔执行绘制操作,填充路径锚点向下和向右的像素。JDK 1.1 呈现模型与大多数现有平台呈现类的功能一致,需要将整数坐标解析为离散的画笔,使其完全落在指定的像素成员上。

    Java 2D(tm)(Java(tm) 2 平台)API 支持抗锯齿呈现器。一像素宽的画笔不需要完全落在像素 N 或像素 N+1 上。该画笔可以部分落在这两个像素上。不需要为宽画笔选择一个偏离方向,因为沿画笔遍历边缘发生的混合可让画笔的子像素位置对用户可见。另一方面,如果通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_OFF 提示值而关闭了抗锯齿,则当画笔跨在像素边界上时,呈现器可能需要应用偏离来确定要修改哪个像素,例如在设备空间中,当画笔沿着整数坐标绘制时。虽然抗锯齿呈现器的功能使之不再需要呈现模型为画笔指定一个偏离,但对于在屏幕上绘制一像素宽的水平线和垂直线这种常见情形,还是需要抗锯齿和非抗锯齿呈现器执行类似的操作。为了确保通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_ON 而打开的抗锯齿不会导致这些线突然变为此宽度的二倍或一半不透明,需要让该模型为这些线指定一个路径,使它们完全覆盖特定的像素集,以帮助提高其平滑性。

    Java 2D API 维持与 JDK 1.1 呈现行为的兼容性,遗留操作和现有呈现器行为在 Java 2D API 下没有改变。定义了映射到常规 draw 和 fill 方法的遗留方法,它明确指示Graphics2D 根据 Stroke 和 Transform 属性以及呈现提示的设置扩展 Graphics 的方式。在默认属性设置下该定义的执行方式完全相同。例如,默认 Stroke 是一个宽度为 1 且没有虚线的 BasicStroke,屏幕绘制的默认 Transform 是 Identity 转换。

    下面两个规则提供了可预见的呈现行为(无论是否使用了重叠还是抗锯齿)。

    • 将设备坐标定义为在设备像素之间,这避免了重叠呈现和抗锯齿呈现的结果不一致。如果将坐标定义为在像素的中心,则由矩形等形状覆盖的某些像素仅是半覆盖。通过重叠的呈现,半覆盖的像素可能呈现在形状内部,也可能呈现在形状外部。使用抗锯齿呈现,整个形状边缘上的像素都是半覆盖的。另一方面,由于坐标被定义在像素之间,所以无论是否使用抗锯齿进行呈现,像矩形这样的形状将不会有半覆盖像素。
    • 使用 BasicStroke 对象勾画的线和路径可以“标准化”,从而在不同的可绘制点上定位时,无论使用重叠还是抗锯齿呈现进行的绘制都能提供一致的轮廓呈现。此标准化过程通过 KEY_STROKE_CONTROL 提示控制。虽然未指定准确的标准化算法,但此标准化的目标是为了确保可以使用一致的可视外观呈现线条,而不考虑它们在像素网格上的位置;另一个目的是促进以抗锯齿模式呈现更连续的水平和垂直线,从而与没有抗锯齿的线更为相似。典型的标准化步骤可以将抗锯齿线端点提升到像素中心,以减少混合量;也可以调整无抗锯齿线的子像素位置,以便浮点线宽度舍入为近似相等的偶数或奇数像素计数。此过程可以将端点向上移动半个像素(通常沿两个坐标轴的正无穷大方向移动),以得到一致的结果。

    在默认属性设置下,以下定义的常规遗留方法与以前指定行为的执行方式完全相同:

    • 对于 fill 操作,包括 fillRectfillRoundRectfillOvalfillArcfillPolygon 和 clearRect,现在可以使用所需的 Shape 调用 fill。例如,在填充矩形时可调用:
      fill(new Rectangle(x, y, w, h));
      

    • 类似地,对于绘制操作,包括 drawLinedrawRectdrawRoundRectdrawOvaldrawArcdrawPolyline 和 drawPolygon,现在可以使用所需的 Shape 调用 draw。例如,在绘制矩形时可调用:
      draw(new Rectangle(x, y, w, h));
      

    • draw3DRect 和 fill3DRect 方法是根据 Graphics 类中的 drawLine 和 fillRect 方法实现的,根据 Graphics2D 上下文中的当前 Stroke 和 Paint 对象可以预知其行为。此类重写了那些独占地使用当前 Color 的实现,重写当前 Paint 以及使用 fillRect 的 Paint,以描述与以前存在的方法完全相同的行为,而不考虑当前 Stroke 的设置。
    Graphics 类仅定义了 setColor 方法来控制要绘制的颜色。由于 Java 2D API 扩展了 Color 对象来实现新的 Paint 接口,因此现有的 setColor 方法现在是将当前 Paint 属性设置为 Color 对象的便捷方法。setColor(c) 等同于 setPaint(c)

    Graphics 类定义了两种方法来控制如何将颜色应用到目标。

    1. setPaintMode 方法实现为设置默认 Composite 的便捷方法,它等同于 setComposite(new AlphaComposite.SrcOver)
    2. setXORMode(Color xorcolor) 方法实现为设置特殊 Composite 对象的便捷方法,它忽略源颜色的 Alpha 分量,并将目标颜色设置为以下值:
      dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
      

    另请参见:
    RenderingHints

    构造方法摘要
    protected Graphics2D() 
              构建一个新的 Graphics2D 对象。
     
    方法摘要
    abstract  void addRenderingHints(Map<?,?> hints) 
              为呈现算法设置任意数量的首选项值。
    abstract  void clip(Shape s) 
              将当前 Clip 与指定 Shape 的内部区域相交,并将 Clip 设置为所得的交集。
    abstract  void draw(Shape s) 
              使用当前 Graphics2D 上下文的设置勾画 Shape 的轮廓。
     void draw3DRect(int x, int y, int width, int height, boolean raised) 
              绘制指定矩形的 3-D 高亮显示边框。
    abstract  void drawGlyphVector(GlyphVector g, float x, float y) 
              使用 Graphics2D 上下文的呈现属性,呈现指定 GlyphVector 的文本。
    abstract  void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) 
              呈现使用 BufferedImageOp 过滤的 BufferedImage
    abstract  boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) 
              呈现一个图像,在绘制前进行从图像空间到用户空间的转换。
    abstract  void drawRenderableImage(RenderableImage img, AffineTransform xform) 
              呈现 RenderableImage,在绘制前进行从图像空间到用户空间的转换。
    abstract  void drawRenderedImage(RenderedImage img, AffineTransform xform) 
              呈现 RenderedImage,在绘制前进行从图像空间到用户空间的转换。
    abstract  void drawString(AttributedCharacterIterator iterator, float x, float y) 
              依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。
    abstract  void drawString(AttributedCharacterIterator iterator, int x, int y) 
              依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。
    abstract  void drawString(String str, float x, float y) 
              使用 Graphics2D 上下文中当前文本属性状态呈现由指定 String 指定的文本。
    abstract  void drawString(String str, int x, int y) 
              使用 Graphics2D 上下文中的当前文本属性状态呈现指定的 String 的文本。
    abstract  void fill(Shape s) 
              使用 Graphics2D 上下文的设置,填充 Shape 的内部区域。
     void fill3DRect(int x, int y, int width, int height, boolean raised) 
              绘制一个用当前颜色填充的 3-D 高亮显示矩形。
    abstract  Color getBackground() 
              返回用于清除区域的背景色。
    abstract  Composite getComposite() 
              返回 Graphics2D 上下文中的当前 Composite
    abstract  GraphicsConfiguration getDeviceConfiguration() 
              返回与此 Graphics2D 关联的设备配置。
    abstract  FontRenderContext getFontRenderContext() 
              获取此 Graphics2D 上下文中 Font 的呈现上下文。
    abstract  Paint getPaint() 
              返回 Graphics2D 上下文中的当前 Paint
    abstract  Object getRenderingHint(RenderingHints.Key hintKey) 
              返回呈现算法的单个首选项的值。
    abstract  RenderingHints getRenderingHints() 
              获取呈现算法的首选项。
    abstract  Stroke getStroke() 
              返回 Graphics2D 上下文中的当前 Stroke
    abstract  AffineTransform getTransform() 
              返回 Graphics2D 上下文中当前 Transform 的副本。
    abstract  boolean hit(Rectangle rect, Shape s, boolean onStroke) 
              检查指定的 Shape 是否与设备空间中的指定 Rectangle 相交。
    abstract  void rotate(double theta) 
              将当前的 Graphics2D Transform 与旋转转换连接。
    abstract  void rotate(double theta, double x, double y) 
              将当前的 Graphics2D Transform 与平移后的旋转转换连接。
    abstract  void scale(double sx, double sy) 
              将当前 Graphics2D Transform 与缩放转换连接。
    abstract  void setBackground(Color color) 
              设置 Graphics2D 上下文的背景色。
    abstract  void setComposite(Composite comp) 
              为 Graphics2D 上下文设置 Composite
    abstract  void setPaint(Paint paint) 
              为 Graphics2D 上下文设置 Paint 属性。
    abstract  void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) 
              为呈现算法设置单个首选项的值。
    abstract  void setRenderingHints(Map<?,?> hints) 
              使用指定的 hints 替换用于所有呈现算法首选项的值。
    abstract  void setStroke(Stroke s) 
              为 Graphics2D 上下文设置 Stroke
    abstract  void setTransform(AffineTransform Tx) 
              重写 Graphics2D 上下文中的 Transform。
    abstract  void shear(double shx, double shy) 
              将当前 Graphics2D Transform 与剪裁转换连接。
    abstract  void transform(AffineTransform Tx) 
              根据“最后指定首先应用”规则,使用此 Graphics2D 中的 Transform 组合 AffineTransform 对象。
    abstract  void translate(double tx, double ty) 
              将当前 Graphics2D Transform 与平移转换连接。
    abstract  void translate(int x, int y) 
              将 Graphics2D 上下文的原点平移到当前坐标系中的点 (xy)。
     
    从类 java.awt.Graphics 继承的方法
    clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString
     
    从类 java.lang.Object 继承的方法
    clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
     

    构造方法详细信息

    Graphics2D

    protected Graphics2D()
    构建一个新的 Graphics2D 对象。由于 Graphics2D 是一个抽象类,而且它必须由不同输出设备的子类定制,所以无法直接创建 Graphics2D 对象。相反,Graphics2D 对象必须从另一个 Graphics2D 对象获得、由某个 Component 创建,或者从 BufferedImage 之类的图像对象获得。

    另请参见:
    Component.getGraphics(), Graphics.create()
    方法详细信息

    draw3DRect

    public void draw3DRect(int x,
                           int y,
                           int width,
                           int height,
                           boolean raised)
    绘制指定矩形的 3-D 高亮显示边框。矩形的边是高亮显示的,以至于从左上角看呈斜面并加亮。

    高亮显示效果所用的颜色根据当前颜色确定。得到的矩形覆盖的区域为 width + 1 像素宽乘以 height + 1 像素高。此方法独占使用当前 Color,并忽略当前 Paint

    覆盖:
    类 Graphics 中的 draw3DRect
    参数:
    x - 要绘制矩形的 x 坐标。
    y - 要绘制矩形的 y 坐标。
    width - 要绘制矩形的宽度。
    height - 要绘制矩形的高度。
    raised - 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。
    另请参见:
    Graphics.fill3DRect(int, int, int, int, boolean)

    fill3DRect

    public void fill3DRect(int x,
                           int y,
                           int width,
                           int height,
                           boolean raised)
    绘制一个用当前颜色填充的 3-D 高亮显示矩形。矩形的边是高亮显示的,以至于从左上角看呈斜面并加亮。高亮显示效果和填充所用的颜色根据当前 Color 确定。此方法独占使用当前 Color,并忽略当前 Paint

    覆盖:
    类 Graphics 中的 fill3DRect
    参数:
    x - 要填充矩形的 x 坐标。
    y - 要填充矩形的 y 坐标。
    width - 要填充矩形的宽度。
    height - 要填充矩形的高度。
    raised - 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。
    另请参见:
    Graphics.draw3DRect(int, int, int, int, boolean)

    draw

    public abstract void draw(Shape s)
    使用当前 Graphics2D 上下文的设置勾画 Shape 的轮廓。应用的呈现属性包括 ClipTransformPaintComposite 和 Stroke 属性。

    参数:
    s - 要呈现的 Shape
    另请参见:
    setStroke(java.awt.Stroke), setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), setComposite(java.awt.Composite)

    drawImage

    public abstract boolean drawImage(Image img,
                                      AffineTransform xform,
                                      ImageObserver obs)
    呈现一个图像,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用 Graphics2D 中的当前 Transform 完成。在应用 Graphics2D 上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括 ClipTransform 和 Composite 属性。注意,如果指定的转换不可逆,则不会完成呈现。

    参数:
    img - 要呈现的指定图像。如果 img 为 null,则此方法不执行任何动作。
    xform - 从图像空间到用户空间的转换
    obs - 转换了多个 Image 时要通知的 ImageObserver
    返回:
    如果 Image 被完全加载并完全呈现,则为 true,否则为 null;如果仍在加载 Image,则为 false
    另请参见:
    transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

    drawImage

    public abstract void drawImage(BufferedImage img,
                                   BufferedImageOp op,
                                   int x,
                                   int y)
    呈现使用 BufferedImageOp 过滤的 BufferedImage。 应用的呈现属性包括 ClipTransform 和 Composite 属性。这等价于:
     img1 = op.filter(img, null);
     drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
    

    参数:
    op - 在呈现之前要应用到图像的过滤器
    img - 要呈现的指定 BufferedImage。 如果 img 为 null,则此方法不执行任何动作。
    x - 用户空间中呈现该图像左上角位置的 x 坐标
    y - 用户空间中呈现该图像左上角位置的 y 坐标
    另请参见:
    transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

    drawRenderedImage

    public abstract void drawRenderedImage(RenderedImage img,
                                           AffineTransform xform)
    呈现 RenderedImage,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用 Graphics2D 中的当前 Transform 完成。在应用 Graphics2D 上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括 ClipTransform 和 Composite 属性。注意,如果指定的转换不可逆,则不会完成呈现。

    参数:
    img - 要呈现的图像。如果 img 为 null,则此方法不执行任何操作。
    xform - 从图像空间到用户空间的转换
    另请参见:
    transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

    drawRenderableImage

    public abstract void drawRenderableImage(RenderableImage img,
                                             AffineTransform xform)
    呈现 RenderableImage,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用 Graphics2D 中当前的 Transform 完成。在应用 Graphics2D 上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括 ClipTransform 和 Composite 属性。注意,如果指定的转换不可逆,则不会完成呈现。

    呈现 RenderableImage 时,可以使用在 Graphics2D 对象上设置的呈现提示。如果由特定 RenderableImage 识别的特定提示需要显式控制,或者需要知道使用哪一个提示,则应直接从 RenderableImage 获取 RenderedImage,并使用 drawRenderedImage 呈现它。

    参数:
    img - 要呈现的图像。如果 img 为 null,则此方法不执行任何操作。
    xform - 从图像空间到用户空间的转换
    另请参见:
    transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)

    drawString

    public abstract void drawString(String str,
                                    int x,
                                    int y)
    使用 Graphics2D 上下文中的当前文本属性状态呈现指定的 String 的文本。首字符的基线位于用户空间的 (xy) 位置处。应用的呈现属性包括 ClipTransformPaintFont 和Composite 属性。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。

    指定者:
    类 Graphics 中的 drawString
    参数:
    str - 要呈现的字符串
    x - 呈现 String 位置的 x 坐标
    y - 呈现 String 位置的 y 坐标
    抛出:
    NullPointerException - 如果 str 为 null
    从以下版本开始:
    JDK1.0
    另请参见:
    Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)

    drawString

    public abstract void drawString(String str,
                                    float x,
                                    float y)
    使用 Graphics2D 上下文中当前文本属性状态呈现由指定 String 指定的文本。首字符的基线位于用户空间中的 (xy) 位置处。应用的呈现属性包括ClipTransformPaintFont 和 Composite 属性。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。

    参数:
    str - 要呈现的 String
    x - 呈现 String 位置的 x 坐标
    y - 呈现 String 位置的 y 坐标
    抛出:
    NullPointerException - 如果 str 为 null
    另请参见:
    setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), Graphics.setFont(java.awt.Font), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

    drawString

    public abstract void drawString(AttributedCharacterIterator iterator,
                                    int x,
                                    int y)
    依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。

    首字符的基线位于用户空间中的 (xy) 位置处。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。

    指定者:
    类 Graphics 中的 drawString
    参数:
    iterator - 要呈现其文本的迭代器
    x - 要呈现迭代器文本处的 x 坐标
    y - 要呈现迭代器文本处的 y 坐标
    抛出:
    NullPointerException - 如果 iterator 为 null
    另请参见:
    setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

    drawString

    public abstract void drawString(AttributedCharacterIterator iterator,
                                    float x,
                                    float y)
    依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。

    首字符的基线位于用户空间中的 (xy) 位置处。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。

    参数:
    iterator - 要呈现其文本的迭代器
    x - 要呈现迭代器文本处的 x 坐标
    y - 要呈现迭代器文本处的 y 坐标
    抛出:
    NullPointerException - 如果 iterator 为 null
    另请参见:
    setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

    drawGlyphVector

    public abstract void drawGlyphVector(GlyphVector g,
                                         float x,
                                         float y)
    使用 Graphics2D 上下文的呈现属性,呈现指定 GlyphVector 的文本。应用的呈现属性包括 ClipTransformPaint 和 Composite 属性。GlyphVector 指定来自一个 Font 的各个字形。GlyphVector 还可以包含字形位置。这是将一组字符呈现到屏幕的最快方式。

    参数:
    g - 要呈现的 GlyphVector
    x - 字形呈现用户空间中的 x 位置
    y - 字形呈现用户空间中的 y 位置
    抛出:
    NullPointerException - 如果 g 为 null
    另请参见:
    Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), GlyphVector, setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

    fill

    public abstract void fill(Shape s)
    使用 Graphics2D 上下文的设置,填充 Shape 的内部区域。应用的呈现属性包括 ClipTransformPaint 和 Composite 属性。

    参数:
    s - 要填充的 Shape
    另请参见:
    setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

    hit

    public abstract boolean hit(Rectangle rect,
                                Shape s,
                                boolean onStroke)
    检查指定的 Shape 是否与设备空间中的指定 Rectangle 相交。如果 onStroke 为 false,则此方法会检查指定 Shape 的内部区域是否与指定的 Rectangle 相交。如果 onStroke 为true,则此方法会检查指定 Shape 轮廓的 Stroke 是否与指定的 Rectangle 相交。可应用的呈现属性包括 ClipTransform 和 Stroke 属性。

    参数:
    rect - 检查设备空间中是否相交的区域
    s - 检查是否相交的 Shape
    onStroke - 用于在测试中选择笔划或填充图形的标志。如果该标志为 true,则测试 Stroke 轮廓。如果该标志为 false,则测试填充的 Shape
    返回:
    如果存在相交,则返回 true;否则返回 false
    另请参见:
    setStroke(java.awt.Stroke), fill(java.awt.Shape), draw(java.awt.Shape), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

    getDeviceConfiguration

    public abstract GraphicsConfiguration getDeviceConfiguration()
    返回与此 Graphics2D 关联的设备配置。

    返回:
    此 Graphics2D 的设备配置。

    setComposite

    public abstract void setComposite(Composite comp)
    为 Graphics2D 上下文设置 Composite。 Composite 用于所有绘制方法中,如 drawImagedrawStringdraw 和 fill。 它指定新的像素如何在呈现过程中与图形设备上的现有像素组合。

    如果此 Graphics2D 上下文正在向显示屏幕绘制 Component,并且 Composite 是自定义对象,而不是 AlphaComposite 类的实例,那么如果有安全管理器,就可以使用AWTPermission("readDisplayPixels") 权限调用其 checkPermission 方法。

    参数:
    comp - 用于呈现的 Composite 对象
    抛出:
    SecurityException - 如果自定义的 Composite 对象被用于呈现到屏幕,并设置了安全管理器,且其 checkPermission 方法不允许该操作。
    另请参见:
    Graphics.setXORMode(java.awt.Color), Graphics.setPaintMode(), getComposite(), AlphaComposite, SecurityManager.checkPermission(java.security.Permission), AWTPermission

    setPaint

    public abstract void setPaint(Paint paint)
    为 Graphics2D 上下文设置 Paint 属性。使用为 null 的 Paint 对象调用此方法对此 Graphics2D 的当前 Paint 属性没有任何影响。

    参数:
    paint - 呈现过程中用于生成颜色的 Paint 对象;或者为 null
    另请参见:
    Graphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaint

    setStroke

    public abstract void setStroke(Stroke s)
    为 Graphics2D 上下文设置 Stroke

    参数:
    s - 呈现过程中用于勾画 Shape 的 Stroke 对象
    另请参见:
    BasicStroke, getStroke()

    setRenderingHint

    public abstract void setRenderingHint(RenderingHints.Key hintKey,
                                          Object hintValue)
    为呈现算法设置单个首选项的值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考 RenderingHints 类。

    参数:
    hintKey - 要设置提示的键。
    hintValue - 指示指定提示类别首选项的值。
    另请参见:
    getRenderingHint(RenderingHints.Key), RenderingHints

    getRenderingHint

    public abstract Object getRenderingHint(RenderingHints.Key hintKey)
    返回呈现算法的单个首选项的值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考 RenderingHints 类。

    参数:
    hintKey - 与要获得的提示对应的键。
    返回:
    表示指定提示键的值的对象。一些键及其关联值在 RenderingHints 类中定义。
    另请参见:
    RenderingHints, setRenderingHint(RenderingHints.Key, Object)

    setRenderingHints

    public abstract void setRenderingHints(Map<?,?> hints)
    使用指定的 hints 替换用于所有呈现算法首选项的值。丢弃所有呈现提示的现有值,并从指定的 Map 对象初始化一组新的已知提示和值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考 RenderingHints 类。

    参数:
    hints - 要设置的呈现提示
    另请参见:
    getRenderingHints(), RenderingHints

    addRenderingHints

    public abstract void addRenderingHints(Map<?,?> hints)
    为呈现算法设置任意数量的首选项值。仅修改在指定 Map 对象中存在的呈现提示值。所有指定对象中不存在的其它首选项不做修改。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考 RenderingHints 类。

    参数:
    hints - 要设置的呈现提示
    另请参见:
    RenderingHints

    getRenderingHints

    public abstract RenderingHints getRenderingHints()
    获取呈现算法的首选项。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。返回所有在一次操作中指定的提示键/值对。有关常用键和值的定义,请参考RenderingHints 类。

    返回:
    包含对当前首选项的 RenderingHints 实例的引用。
    另请参见:
    RenderingHints, setRenderingHints(Map)

    translate

    public abstract void translate(int x,
                                   int y)
    将 Graphics2D 上下文的原点平移到当前坐标系中的点 (xy)。修改 Graphics2D 上下文,使其新的原点对应于此 Graphics2D 上下文原坐标系中的点 (xy)。在此图形上下文上执行的后续呈现操作使用的所有坐标均相对于这个新原点。

    指定者:
    类 Graphics 中的 translate
    参数:
    x - 指定的 x 坐标
    y - 指定的 y 坐标
    从以下版本开始:
    JDK1.0

    translate

    public abstract void translate(double tx,
                                   double ty)
    将当前 Graphics2D Transform 与平移转换连接。后续呈现相对于前一位置平移指定的距离。这等同于调用 transform(T),其中 T 为以下矩阵表示的 AffineTransform
                    [   1    0    tx  ]
                    [   0    1    ty  ]
                    [   0    0    1   ]
     

    参数:
    tx - 沿 x 轴平移的距离
    ty - 沿 y 轴平移的距离

    rotate

    public abstract void rotate(double theta)
    将当前的 Graphics2D Transform 与旋转转换连接。后续呈现相对于前一原点旋转指定弧度。这等同于调用 transform(R),其中 R 为以下矩阵表示的 AffineTransform
                    [   cos(theta)    -sin(theta)    0   ]
                    [   sin(theta)     cos(theta)    0   ]
                    [       0              0         1   ]
     
    使用正角度 theta 进行旋转,可将正 x 轴上的点转向正 y 轴。

    参数:
    theta - 旋转的角度,以弧度为单位

    rotate

    public abstract void rotate(double theta,
                                double x,
                                double y)
    将当前的 Graphics2D Transform 与平移后的旋转转换连接。后续呈现的变换如下:平移到指定位置,旋转指定弧度,然后向回平移相同的距离。这等同于以下调用序列:
                    translate(x, y);
                    rotate(theta);
                    translate(-x, -y);
     
    使用正角度 theta 进行旋转,可将正 x 轴上的点转向正 y 轴。

    参数:
    theta - 旋转的角度,以弧度为单位
    x - 旋转原点的 x 坐标
    y - 旋转原点的 y 坐标

    scale

    public abstract void scale(double sx,
                               double sy)
    将当前 Graphics2D Transform 与缩放转换连接。后续呈现相对于以前的缩放比例根据指定的缩放系数来重新调整大小。这等同于调用 transform(S),其中 S 为以下矩阵表示的AffineTransform
                    [   sx   0    0   ]
                    [   0    sy   0   ]
                    [   0    0    1   ]
     

    参数:
    sx - 相对于以前的呈现操作,后续呈现操作中的与 X 坐标相乘的量。
    sy - 相对于以前的呈现操作,后续呈现操作中的与 Y 坐标相乘的量。

    shear

    public abstract void shear(double shx,
                               double shy)
    将当前 Graphics2D Transform 与剪裁转换连接。后续呈现相对于以前的位置由指定的乘式剪裁。这等同于调用 transform(SH),其中 SH 为以下矩阵表示的 AffineTransform
                    [   1   shx   0   ]
                    [  shy   1    0   ]
                    [   0    0    1   ]
     

    参数:
    shx - 在正 X 轴方向移动坐标的乘数,它可以作为其 Y 坐标的函数
    shy - 在正 Y 轴方向移动坐标的乘数,它可以作为其 X 坐标的函数

    transform

    public abstract void transform(AffineTransform Tx)
    根据“最后指定首先应用”规则,使用此 Graphics2D 中的 Transform 组合 AffineTransform 对象。如果当前 Transform 为 Cx,那么使用 Tx 进行组合的结果为新的 Transform Cx'。Cx' 成为此 Graphics2D 的当前 Transform。通过更新的 Transform Cx' 转换点 p 等同于首先通过 Tx 转换点 p,然后通过原来的 Transform Cx 转换所得结果。换句话说,Cx'(p) = Cx(Tx(p))。如有必要,可以生成 Tx 的副本,从而对 Tx 进行进一步修改时不会影响呈现。

    参数:
    Tx - 要与当前 Transform 组合的 AffineTransform 对象
    另请参见:
    setTransform(java.awt.geom.AffineTransform), AffineTransform

    setTransform

    public abstract void setTransform(AffineTransform Tx)
    重写 Graphics2D 上下文中的 Transform。警告:切勿使用此方法在现有转换之上应用新的坐标转换,因为 Graphics2D 可能已经有用于其它用途(例如,呈现 Swing 组件或应用缩放转换以调整打印机的分辨率)的转换。

    要添加坐标转换,请使用 transformrotatescale 或 shear 方法。setTransform 方法只用于呈现后恢复原始 Graphics2D 的转换,如以下示例所示:

    // Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);

    参数:
    Tx - 从 getTransform 方法检索的 AffineTransform
    另请参见:
    transform(java.awt.geom.AffineTransform), getTransform(), AffineTransform

    getTransform

    public abstract AffineTransform getTransform()
    返回 Graphics2D 上下文中当前 Transform 的副本。

    返回:
    Graphics2D 上下文中的当前 AffineTransform
    另请参见:
    transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)

    getPaint

    public abstract Paint getPaint()
    返回 Graphics2D 上下文中的当前 Paint

    返回:
    当前 Graphics2D Paint,它定义一种颜色或模式。
    另请参见:
    setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color)

    getComposite

    public abstract Composite getComposite()
    返回 Graphics2D 上下文中的当前 Composite

    返回:
    当前 Graphics2D Composite,它定义一种复合样式。
    另请参见:
    setComposite(java.awt.Composite)

    setBackground

    public abstract void setBackground(Color color)
    设置 Graphics2D 上下文的背景色。背景色用于清除区域。当为 Component 构建 Graphics2D 时,可以从 Component 继承背景色。设置 Graphics2D 上下文中的背景色仅影响后续clearRect 调用,不影响该 Component 的背景色。要更改 Component 的背景,请使用该 Component 的相应方法。

    参数:
    color - 在对 clearRect 的后续调用中所用的背景色
    另请参见:
    getBackground(), Graphics.clearRect(int, int, int, int)

    getBackground

    public abstract Color getBackground()
    返回用于清除区域的背景色。

    返回:
    当前 Graphics2D Color,它定义背景色。
    另请参见:
    setBackground(java.awt.Color)

    getStroke

    public abstract Stroke getStroke()
    返回 Graphics2D 上下文中的当前 Stroke

    返回:
    当前 Graphics2D Stroke,它定义线条样式。
    另请参见:
    setStroke(java.awt.Stroke)

    clip

    public abstract void clip(Shape s)
    将当前 Clip 与指定 Shape 的内部区域相交,并将 Clip 设置为所得的交集。与当前 Clip 相交之前,使用当前 Graphics2D Transform 转换指定的 Shape。 此方法用于使当前 Clip变小。要使 Clip 变大,请使用 setClip。 此方法修改的用户剪贴区 独立于与设备边界和可视性关联的剪切。如果以前没有设置任何剪贴区,或者已经使用带有 null 参数的 setClip 将剪贴区清除,那么指定的 Shape 将成为新的用户剪贴区。

    参数:
    s - 要与当前 Clip 相交的 Shape。如果 s 为 null,则此方法会清除当前 Clip

    getFontRenderContext

    public abstract FontRenderContext getFontRenderContext()
    获取此 Graphics2D 上下文中 Font 的呈现上下文。FontRenderContext 封装应用程序提示,如抗锯齿和小数规格,以及目标设备的特定信息(如每英寸的点数)。当使用 Font和 TextLayout 等对象执行印刷格式编排时,应用程序应提供此信息。将各种呈现提示应用到文本呈现时,执行其自身布局并且需要对字形(如前距和线高)的各种特征进行精确测量的应用程序也应提供此信息。

    展开全文
  • Graphics详解

    千次阅读 2017-07-13 08:44:40
    Graphics类包含在System.Drawing名称空间下,Graphics对象表示GDI+绘图表面,是用于创建图形图像的对象。创建要绘制的图形对象,需要先创建 Graphics对象,然后才可以使用GDI+绘制线条和形状、呈现文本或显示与操作...
  • Computer Graphics From Pixels to Programmable Graphics Hardware 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本...
  • Graphics Settings

    千次阅读 2016-09-20 19:11:42
    The graphics settings shown here are mostly useful for customizing and optimizing graphics-related settings across the project. 这里显示的图形设置对定制和优化项目中的图形相关的设置非常重要。 Built...
  • 无法打开包括文件:“graphics.h”: No such file or directory” 在查阅资料后发现是缺少easyx文件。 接下来,就介绍一下手动配置一下easyx文件。 easyx头文件和库文件到vs2012中的过程。 easyx是一款比较轻便和...
  • tensorflow graphics详解

    千次阅读 2019-05-14 18:43:26
    详细英文文档地址: 地址1:https://github.com/tensorflow/graphics 地址2:... 说明:因为tensorflow地址大部分无法访问,可以在https://github.com/tensorflow/下找到需要的内容 Tenso...
  • Graphics 类相当于一个画布,每个 Swing 组件都通过 Graphics 对象来绘制显示。绘图的原点位于组件的左上角,如下图所示: Graphics类中常用的绘制相关方法: ○ 参数 / 设置: // 创建...
  • 按照教程我将graphics加入到了头文件里,但在点击编译的时候发现界面跳出graphics的源代码然后在下面这行显示了错误: ``` #include <sstream> // Provides std::ostringstream ``` 错误原因是: D:\CodeBlocks...
  • Graphics消耗

    千次阅读 2018-07-09 23:46:54
    WaitForTargetFPS、Gfx.WaitForPresent 和 Graphics.PresentAndSync是我们经常会被问到的参数。想必正在读此文的你也经常在Profiler中遇到过这几项CPU开销过大的情况。对此,我们今天就来好好地聊一聊这几个参数的...
  • 打开vs2019安装目录 把下载的esayX解压包中include中文件放到vs目录下的include中去。 把下载的esayX解压包中lib中除了amd64文件放到vs目录下的lib\x86中去。 恭喜你安装完成可以使用啦 把下载的amd64中的文件...
  • A graphics card and driver with support for OpenGL 3.3 or higher is required. Installing the latest driver for your graphics card may resolve the issue. The program will now close. 错误提示如上所示...
  • Graphics

    万次阅读 2011-09-05 14:57:43
    Graphics类包含在System.Drawing名称空间下,Graphics对象表示GDI+绘图表面,是用于创建图形图像的对象。创建要绘制的图形对象,需要先创建 Graphics对象,然后才可以使用GDI+绘制线条和形状、呈现文本或显示与操作...
  • C graphics方法

    2019-02-20 11:02:09
    C graphics方法
  • 打开vs2019安装目录 把下载的esayX解压包中include中文件放到vs目录下的include中去。 把下载的esayX解压包中lib中除了amd64文件放到vs目录下的lib\x86中去。 恭喜你安装完成可以使用啦 把下载的amd64中的文件放...
  • 功能介绍:(1)点击页面上的图片打开指定的网址(2)点击按钮,更换背景图 一、ui界面 ...拉入graphicsView、Push Button、Label控件进行简单的页面布局。 图片资源导入方式:Qt Designer右下...
  • GraphicsView框架

    千次阅读 2018-11-09 16:38:57
    本文主要翻译自QT 5.6.2GraphicsView官方文档 一、GraphicsView框架简介 QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对...
  • This graphics driver could not find compatible graphics hardware 解决
  • Python graphics库安装

    2020-10-29 15:43:46
    打开压缩后的文件夹,点开Graphics文件夹,把__init__文件重命名为graphics 3. 将graphics复制到Python安装目录的lib文件夹下的site-packages中,这样就安装完成了。 4. 测试安装成功,打开cmd->输入python-&...
  • 之前学习QT Graphics View框架,除了基本的图元外,还可以通过QGraphicsProxyWidget类添加QT的基本Widget(如按钮、复选框、单选框等),常使用的场景类接口如下: QGraphicsProxyWidget *QGraphicsScene::...
  • python graphics模块下载

    2020-10-26 20:54:39
    由于python pip无法 安装graphics模块,需要自己下载:http://mcsp.wartburg.edu/zelle/python/graphics.py,但网站可能需要梯子才能打开,于是我下载了放在网盘里,有需要可以下载: 链接:...
  • Graphics Context详解

    千次阅读 2013-07-17 09:50:20
    Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框. Quartz提供了以下几种类型的Graphics Context: Bitmap ...
  • graphics.h

    2012-04-06 17:37:24
    vc,vs中没有这个库,只出现在TC中,这个可以移植到vs,vc
  • ** Python 3.8.1安装Graphics库的教程** 由于Python 目前版本未自带graphics库,需要自己手动安装。...3.打开压缩后的文件夹,点开Graphics文件夹,把__init__文件重命名为graphics 4.将graphics
  • Visual C++中graphics.h 下载

    千次阅读 2019-10-05 21:38:40
    VC用graphics.h,Dev-C++好像不能用 下载graphics.h 打开文件 点击下一步
  • 安装tensorflow-graphics

    2021-04-08 14:00:28
    1.在VS中的python项目中,打开管理python程序包,使用命令安装 pip install tensorflow-graphics 提示错误:OpenEXR库安装失败 2.安装OpenEXR python库 pip install openexr 提示找不到ImathBox.h文件。 需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,878
精华内容 29,551
关键字:

无法打开graphics