坐标体系介绍

  下图说明了java坐标体系。坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位。在java的坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。

      

绘图还必须要搞清楚一个非常重要的概念,像素:

  计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成。例如,计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共600行,整个计算机屏幕共有480 000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。

  案例:先画一个圆圈

  example code:

  

  1. package com.test;
  2. /*
  3. * 功能: java绘图原理
  4. * */
  5. import java.awt.*;
  6. import javax.swing.*;
  7. public class demo1 extends JFrame{
  8.  
  9. /**
  10. * @param args
  11. */
  12. Mypanel mp =null;
  13. public static void main(String[] args) {
  14. // TODO Auto-generated method stub
  15. demo1 de = new demo1();
  16. }
  17.  
  18. public demo1()
  19. {
  20. mp = new Mypanel();
  21.  
  22. this.add(mp);
  23. this.setSize(400, 300);
  24. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  25. this.setVisible(true);
  26. }
  27. }
  28.  
  29. //定义一个mypanel(我自己的面板,适用于绘图和实现绘图的区域)
  30. class Mypanel extends JPanel
  31. {
  32. //覆盖JPanel的paint方法
  33. //Graphics 是绘图的重要类,你可以把它理解成一只画笔
  34. public void paint(Graphics g)
  35. {
  36. //1. 调用父类函数完成初始化任务
  37. //这句话不能少
  38. super.paint(g);
  39. //先画一个圆圈
  40. g.drawOval(10,10,30,30);
  41.  
  42. }
  43. }

  绘图原理(1)

  component类提供了两个和 绘图相关重要的方法:

  1. paint(Graphics g)绘制组件的 外观

  2. repaint()刷新组件的外观

  当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件

  

  绘图原理(2)

  在以下情况paint()将会被调用:

  1. 窗口最小化,再最大化

  2. 窗口的大小发生变化

  3. repaint函数被调用

Graphics类

  Graphics类,你可以理解就是画笔,为我们提供了各种绘制图形的方法:【强烈建议参考jdk帮助文档】

  1、画直线 drawLine(int x1,int y1,int x2,int y2);

  2、画矩形边框 drawRect(int x,int y,int width,int height);

  3、画椭圆边框 drawOval(int x,int y,int width,int height);

  4、填充矩形 fillRect(int x,int y,int width,int height);

  5、填充椭圆 fillOval(int x,int y,int width,int height);

  6、画图片 drawImage(Image img.int x,int y,..);

  7、画字符串 drawString(String str,int x,int y);

  8、设置画笔的字体 setFont(Font font);

  9、设置画笔的颜色 setColor(Color c);

java基础 绘图技术.坦克大战 之java绘图坐标体系(一)的更多相关文章

  1. java基础 绘图技术.坦克大战 之java绘图坐标体系(二)

    功能:在坐标系上绘制坦克 /* * 功能:坦克游戏的1.0 * 1. 画出坦克 * */ package com.tank; import javax.swing.*; import java.awt ...

  2. Java基础系列1:深入理解Java数据类型

    Java基础系列1:深入理解Java数据类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括四个 ...

  3. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  4. java基础思维导图,让java不再难懂

    java基础思维导图,让java不再难懂 原文链接  https://my.oschina.net/u/3080373/blog/873056 最近看了一些文章的思维导图,发现思维导图真是个强大的工具 ...

  5. JAVA课程设计(坦克大战)

    2019-01-16 坦克大战游戏背景: 1. 需求分析 1.1环境要求 操作系统:Windows 7(SP1)以上 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 1.2角 ...

  6. java制作简单的坦克大战

    坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...

  7. Java基础扫盲系列(三)— Java内省技术

    前言 Java内省技术属于Java基础体系的的一部分,但是很多人都不甚了解.笔者也是在学习Spring源码的过程中遇到该技术模块的.为了完善技术体系,本文将全面的学习该技术.在提到Java内省技术,就 ...

  8. Java基础学习总结(83)——Java泛型总结

    1. 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型 ...

  9. Java基础学习总结(80)——Java性能优化详解

    让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了.在面对对象的环境中,性能问题就像来势凶猛的野兽.但JVM的复杂性将性能调整的复杂程度增加了一个级别.这里Refcard涵盖了JVM in ...

随机推荐

  1. 时隔一年再读到the star

    The Star Arthur C. Clarke It is three thousand light-years to the Vatican. Once, I believed that spa ...

  2. [LeetCode] Minimum Height Trees 最小高度树

    For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...

  3. [LeetCode] Same Tree 判断相同树

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  4. [LeetCode] Two Sum 两数之和

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  5. .NET跨平台之旅:corehost 是如何加载 coreclr 的

    在前一篇博文中,在好奇心的驱使下,探秘了 dotnet run ,发现了神秘的 corehost  —— 运行 .NET Core 应用程序的幕后英雄.有时神秘就是一种诱惑,神秘的 corehost ...

  6. Python 日常积累

    包管理 >from ... import ... 的用法和直接import的区别 直接使用import时,如果需要使用到导入模块内的属性和方法,必须使用模块名.属性和模块名.方法的方式进行调用 ...

  7. 基于centos的lnmp搭建

    部署lnmp环境 安装配置mariadb配置php配置phpmyadmin配置php-fpm配置nginx配置测试 LNMP(linux,nginx,mariadb,php)部署,以下默认在root权 ...

  8. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  9. python--django项目如何设置用自己的iP地址访问项目

    一.首先需要执行>manage.py runserver 0.0.0.0:8000. 二.在setting.py里面需要添加ALLOWED_HOSTS="*".

  10. 几个MQTT的知识点

    开始正文前需要感谢一下网友“小龙”和emqtt.io群里的网友们的帮助,本人刚刚开始使用MQTT有很多不懂的地方,在emqtt.io群里询问解决方法的时候,“小龙”给我详细的讲解了一些MQTT的知识点 ...