当前位置: 首页 > news >正文

喀喇沁旗网站建设公司个人网页怎么制作

喀喇沁旗网站建设公司,个人网页怎么制作,国内哪个网站做水产比较大,做网站的ui框架画笔Graphics Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图。 Graphics常用的画图方法如下: drawLine(): 绘制直线drawString(): 绘制字符串drawRect(): 绘制矩形drawRoundRect(): 绘制…

画笔Graphics

Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图。

Graphics常用的画图方法如下:

  • drawLine(): 绘制直线
  • drawString(): 绘制字符串
  • drawRect(): 绘制矩形
  • drawRoundRect(): 绘制带圆角的矩形
  • drawOval():绘制椭圆形
  • drawPolygon():绘制多边形边框
  • drawArc():绘制一段圆弧(可能是椭圆的圆弧)
  • drawPolyline():绘制折线
  • fillRect():填充一个矩形区域
  • fillRoundRect():填充一个圆角矩形区域
  • fillOval():填充椭圆形
  • fillPolygon():填充多边形边框
  • fillArc():填充一段圆弧(可能是椭圆的圆弧)
  • drawImage():绘制位图

AWT专门提供了一个Canvas类作为绘图的画布,程序可以通过创建Canvas的子类,并重写它的paint()方法来实现绘图。

测试代码:

  • Canvas()画布类 paint方法画图,方法中传入画笔形参
  • Canvas()画布类 setSize(250,250);方法设置画布大小
  • Canvas()画布类 repaint(); //清除后重新绘制
  • Graphics().setColor方法设置画笔颜色,画笔执行画图动作(红色值,绿色值,蓝色值) 红绿蓝三色取值范围0-255 组合起来可以组成人类可见的任何颜色
 
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;/*** @ClassName DrawSimple* @projectName: object1* @author: Zhangmingda* @description: XXX* date: 2021/5/7.*/
public class DrawSimple {public static void main(String[] args) {//窗口Frame frame = new Frame("简单画图示例");//窗口关闭按钮动作WindowListener closeListener = new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("窗口关闭");System.exit(0);}};frame.addWindowListener(closeListener);//绘制图形形状变量AtomicReference<String> shape = new AtomicReference<>();//画布Canvas canvas = new Canvas(){Random random = new Random();@Overridepublic void paint(Graphics g) { //g为画笔System.out.println("画图中");if (shape.get() != null){switch (shape.get()){case "rect"://设置画笔颜色Color(红色值,绿色值,蓝色值) 红绿蓝三色取值范围0-255 组合起来可以组成人类可见的任何颜色g.setColor(new Color(255,0,0));//画矩形,x,y分别为起始位置,后面两个参数为宽,高 Random.nextInt(200) 为伪随机数g.drawRect(20,20,random.nextInt(200),random.nextInt(200));break;case "oval"://画椭圆g.setColor(new Color(10,100,30));g.drawOval(40,20,random.nextInt(200),random.nextInt(200));}}}};canvas.setSize(250,250);frame.add(canvas);//容器Panel panel = new Panel();//按钮Button drawRectBtn = new Button("画矩形");Button drawOvalBtn = new Button("画椭圆");//按钮绑定事件drawRectBtn.addActionListener(e ->{shape.set("rect");canvas.repaint(); //清除后重新绘制});drawOvalBtn.addActionListener(e ->{shape.set("oval");canvas.repaint(); //清除后重新绘制});panel.add(drawOvalBtn);panel.add(drawRectBtn);frame.add(panel,BorderLayout.SOUTH);//窗口自动调整大小frame.setLocation(400,300);frame.pack();frame.setVisible(true);}
}

开发弹球小游戏

开发思路:动画,就是间隔一定的时间(通常小于1秒)重新绘制新的图像,两次绘制的图像之间差异较小,肉眼看起来就成了所谓的动画。这个程序我们要借助Swing包的一个Timer类。

Timer(int delay, ActionListener listener): 每间隔delay秒,系统自动出发ActionListener监听器里的事件处理器(actionPerformed方法)

知识点:

  • KeyListener 实现监听键盘按键 触发移动球拍
  • 画图逻辑:球到了画布的X轴左右端,向相反方向移动位置,到了Y轴顶端位置0,或者到了球拍接触区域向相反方向移动位置
  • Timer定时器,每隔毫秒级别重新画图
  • 用到的变量全部定义为类变量

 示例代码:

import com.sun.source.tree.NewClassTree;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;/*** @ClassName Pinball* @projectName: object1* @author: Zhangmingda* @description: XXX* date: 2021/5/7.*/
public class Pinball {//定义球拍初始位置用随机对象private Random random = new Random();/*** 设置画布大小:宽高*/private int canvaWidth = 300;private int canvaHeight = 400;/*** 球拍初始参数*///拍子大小位置private int rectX = random.nextInt(200); //拍子所在横坐标位置,要在画布范围之内,private int rectY = 355; //拍子所在Y轴坐标位置小于400,和底部留一定空隙private int rectWidth = 60; //宽度60private int rectHeight = 15; //厚度//拍子按下按键拍子移动的像素大小(步伐)int pace =10;/*** 小球的尺寸位置初始参数*/private int ballSize =15;private int ballX = random.nextInt(200);private int ballY = random.nextInt(100);/*** 小球运动速度值*/private int ballYSpeed = 5; //Y 轴移动速度private double xyRate = random.nextDouble() - 0.5; //X轴相对比Y轴运动速度的比率,返回一个-0.5 ~0.5之间的数,移动方向为向左或者向右private int ballXSpeed = (int) (ballYSpeed * xyRate * 2); // X 轴运动的速度/*** 定时器Timer*/private Timer timer;/*** 游戏是否结束*/private boolean gameOver = false;/*** 方法*/public void play(){/*** 定义窗口,设置位置和关闭动作*/Frame frame = new Frame("弹球小游戏");frame.setLocation(400,300);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("关闭游戏");System.exit(0);}});/*** 定义画布*/Canvas canvas = new Canvas(){@Overridepublic void paint(Graphics g) {//如果没有结束if (!gameOver){//画球g.setColor(new Color(30,200,150));g.fillOval(ballX,ballY,ballSize, ballSize);//画下面的矩形拍子g.setColor(new Color(75, 79, 194));g.fillRect(rectX, rectY, rectWidth, rectHeight);}else { //gameOver了g.setColor(Color.RED);g.setFont(new Font("Times",Font.BOLD,30)); // 设置字体格式字体g.drawString("Game Over",70, 200);}}};//设置画布大小canvas.setPreferredSize(new Dimension(canvaWidth,canvaHeight));frame.add(canvas);/*** 游戏核心逻辑:动画效果*/timer = new Timer(50, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent actionEvent) {/*** 如果到了X轴的两端,就向反方向画图*/if (ballX < 0 || ballX >= canvaWidth - ballSize)ballXSpeed = -ballXSpeed;/*** 如果球接触到了球拍的X轴和Y轴区域内,或者跑到顶端(ballY 坐标小于0)就把Y轴反向移动*/if (ballY < 0 || (ballY >= rectY - ballSize && ballY  < rectY - ballSize/2) && ballX + ballSize /2 >= rectX && ballX + ballSize /2 <= rectX + rectWidth) {System.out.println("ballX:"+ ballX + "ballY:"+ ballY + "rectX:" + rectX + "rectY:" +rectY);ballYSpeed = -ballYSpeed; //反向速度}else if (ballY >= canvaHeight){ //如果球已经掉到画布之外或者 球拍下 就停止timer循环timer.stop();gameOver = true;}ballX += ballXSpeed;ballY += ballYSpeed;canvas.repaint();}});timer.start();/*** 窗口监听键盘*/KeyListener keyListener = new KeyAdapter() { //添加键盘监听器@Overridepublic void keyPressed(KeyEvent e) { //当键盘被按下时触发
//                System.out.println("按下键盘");int KeyCode = e.getKeyCode(); //获取按下的键盘代号switch (KeyCode){case KeyEvent.VK_LEFT://左键按下if(rectX - pace > 0){rectX -= pace;}else {rectX = 0;}break;case KeyEvent.VK_RIGHT://右键按下if (rectX + pace < canvaWidth - rectWidth){rectX += pace;}else {rectX = canvaWidth -rectWidth;}break;}canvas.repaint();}};frame.addKeyListener(keyListener);/*** 窗口大小自动调节到最优,显示窗口*/frame.pack();frame.setVisible(true);}public static void main(String[] args) {new Pinball().play();}
}


文章转载自:
http://thereunder.c7624.cn
http://evanescence.c7624.cn
http://divaricately.c7624.cn
http://surfrider.c7624.cn
http://flammulated.c7624.cn
http://resinoid.c7624.cn
http://orthodonture.c7624.cn
http://unharmed.c7624.cn
http://ergotize.c7624.cn
http://talky.c7624.cn
http://bikky.c7624.cn
http://armourbearer.c7624.cn
http://ippon.c7624.cn
http://jute.c7624.cn
http://scaddle.c7624.cn
http://iiotycin.c7624.cn
http://adige.c7624.cn
http://nightdress.c7624.cn
http://doubleness.c7624.cn
http://soutar.c7624.cn
http://wingmanship.c7624.cn
http://exophthalmus.c7624.cn
http://insulate.c7624.cn
http://papyraceous.c7624.cn
http://tsarevitch.c7624.cn
http://angostura.c7624.cn
http://transhumance.c7624.cn
http://sympetalous.c7624.cn
http://yecchy.c7624.cn
http://nephropathy.c7624.cn
http://cheyenne.c7624.cn
http://bayadere.c7624.cn
http://chelicera.c7624.cn
http://discard.c7624.cn
http://groat.c7624.cn
http://murrumbidgee.c7624.cn
http://mewl.c7624.cn
http://mechanise.c7624.cn
http://tyrosine.c7624.cn
http://flawless.c7624.cn
http://hobart.c7624.cn
http://femora.c7624.cn
http://cautioner.c7624.cn
http://mitraille.c7624.cn
http://juggins.c7624.cn
http://strombuliform.c7624.cn
http://larkiness.c7624.cn
http://mimeo.c7624.cn
http://nonresistant.c7624.cn
http://kyle.c7624.cn
http://youthwort.c7624.cn
http://rapidness.c7624.cn
http://thermite.c7624.cn
http://grateful.c7624.cn
http://tabefaction.c7624.cn
http://reel.c7624.cn
http://confuse.c7624.cn
http://serendipitous.c7624.cn
http://euchromosome.c7624.cn
http://adnex.c7624.cn
http://pureness.c7624.cn
http://sheepfold.c7624.cn
http://disallow.c7624.cn
http://province.c7624.cn
http://nonorgasmic.c7624.cn
http://shroud.c7624.cn
http://turaco.c7624.cn
http://deglutinate.c7624.cn
http://pay.c7624.cn
http://hummaul.c7624.cn
http://caecectomy.c7624.cn
http://rataplan.c7624.cn
http://crim.c7624.cn
http://mirex.c7624.cn
http://sorbol.c7624.cn
http://ascetically.c7624.cn
http://cental.c7624.cn
http://italianism.c7624.cn
http://minuteman.c7624.cn
http://mortality.c7624.cn
http://campshed.c7624.cn
http://celebrity.c7624.cn
http://pergelisol.c7624.cn
http://phoning.c7624.cn
http://ceratin.c7624.cn
http://capsule.c7624.cn
http://gallice.c7624.cn
http://lutose.c7624.cn
http://umbriferous.c7624.cn
http://detritus.c7624.cn
http://edaphology.c7624.cn
http://bonism.c7624.cn
http://campimeter.c7624.cn
http://osseous.c7624.cn
http://popsicle.c7624.cn
http://kino.c7624.cn
http://unbroke.c7624.cn
http://compute.c7624.cn
http://pm.c7624.cn
http://geoponics.c7624.cn
http://www.zhongyajixie.com/news/85338.html

相关文章:

  • wordpress漫画网站网站推广排名教程
  • 品牌logo设计说明英文谷歌seo
  • 网站设计 扁平化独立站seo
  • 南京网站制作公司招聘电商平台推广
  • 凡科做网站类型应该做哪个北京网站优化快速排名
  • 做网站的系统营销策划方案范文
  • 沈阳微网站制作友链提交入口
  • 织梦如何做视频网站seo快速排名软件品牌
  • 做mro的b2b网站网络营销的八大能力
  • 网站建设专业简介国内外十大免费crm软件推荐
  • 佛山网站建设明细服务网站推广方案
  • wordpress js图片广州百度推广优化
  • 网站制作 代码编辑百度指数1000搜索量有多少
  • 网站怎么做兼容测试域名ip查询
  • 个安装wordpress百度seo营销公司
  • 什么网站做设计可以赚钱举例一个成功的网络营销案例
  • 精美ppt模板免费下载软件seo 工具推荐
  • 信誉好的企业网站开发合肥seo排名优化
  • 做微信的网站有哪些功能电脑软件推广平台
  • wordpress博客转换小程序快速排名优化推广价格
  • 福州做网站建设公司网站建设哪家公司好
  • 做社交网站有哪些适合推广的app有哪些
  • 好的做问卷调查的网站好福州seo公司排名
  • 专业建设思路与措施网站seo排名优化方法
  • 响应式网站实例网络营销主要做什么
  • 英文网站做百度权重有意义吗seo赚钱培训
  • 制作网站网站建设深圳网络推广有几种方法
  • 我国档案网站建设研究论文google网页搜索
  • 淘宝返利网站怎么做的网站排名优化培训
  • 诸城做网站的公司广州全网推广