后面讲的一个解释都没有,完全不懂为什么

后面讲的一个解释都没有,完全不懂为什么

6. 获取文字上下文对象
FontRenderContext context = graphics.getFontRenderContext();
7. 绘制矩形对象
Rectangle2D bounds = font.getStringBounds(string , context);

9. 设置绘制文字的坐标和间距
double x = (width - bounds.getWidth()) / 2
double y = (height - bounds.getHeight()) / 2;
double ascent = bounds.getY();
double baseY = Y - ascent;
graphics.drawString(code,(int)x , (int)baseY);
10. 输出图片流到浏览器
graphics.dispose();
ImageIO.write(bufferedImage , "jpg" , response.getOutputStream())
response.flushBuffer();
return codeString

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
Math_J 2019-02-03 23:49:34

说实话 这个老师是学到目前为止讲课最快的一个 而且属实有点讲话含糊不清 希望可以解决一下

  • 感谢同学的反馈建议,项目类的课程的学习节奏和前面是有些许区别的,建议同学先听一遍,然后跟着老师做一遍,相信你会掌握的更好。祝学习愉快!
    2019-02-11 09:35:19
摔死的笨鸟 2019-01-03 20:06:20

哇,兄弟你好厉害,我从头到尾没听懂,你只是后面

  • 这个类是个工具类,不必全部掌握呦,会用就可以了。并且对于不太懂的部分同学可以看一下楼上老师的解释。祝学习愉快。
    2019-01-04 09:41:23
好帮手慕珊 2019-01-01 11:15:22

你好!有些内容是和图形学相关的内容,所以这里是根据开发经验进行的应用。

FontRenderContext的作用是正确测量文本所需的信息容器,getStringBounds用于获得文字的显示范围,通过6、7两条语句获取矩形对象,并把文字放进去,然后再去设置bounds的具体属性值。

x和y的坐标也可以不这么算,指定也可以,这里希望从宽高的一半开始设置。

bounds.getWidth是获得窗体矩形的宽度,bounds.getHeight是获得窗体矩形的高度,通过(width - bounds.getWidth())/2和(height - bounds.getHeight())/2计算出矩形在xy轴上的坐标。ascent是窗体矩形左上角的 Y 坐标,通过y-ascent就能算出窗体的准确y坐标,然后通过drawString方法进行绘制。

graphics.dispose();是为了销毁绘图中所用到的资源,就像文件输入输出流中的close()方法一样。

ImageIO的write方法的三个参数,bi可以理解成要输出的内容,也就是验证码,第二个参数是输出的格式,第三个参数是输出到哪里,这里是输出到浏览器中。

刷新buffer的作用,是可以手动刷新发送缓冲区的数据到客户端,也就是将新内容发送到客户端

祝学习愉快!


提问者 千寻芷水 2018-12-31 17:00:28

文字上下文对象是什么,为什么要获得上下文对象

矩形对象为什么是那样创建的

x,y坐标为什么要那么算

ascent和baseY分别是什么,为什么要做运算

graphics.dispose()是什么

imageio为什么要传那三个参数

为什么要刷新buffer

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师