今天闲来无事,教大家一个哄妹子的小case。我们需要创建一个心形图案,按照心形图案的位置和长度,对所创建的字符串进行截断并在所需的位置上输出,最终能呈现在屏幕上满满的爱心。废话不多说,直接上源码看效果 ~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package ddd; import java.awt.*; import javax.swing.jframe; public class cardioid extends jframe { //获取屏幕大小 private static final int width = 500 ; private static final int height = 500 ; private static int window_width = toolkit.getdefaulttoolkit().getscreensize().width; private static int window_height = toolkit.getdefaulttoolkit().getscreensize().height; public cardioid(){ super ( "i love you" ); //设置窗口标题 this .setbackground(color.black); this .setlocation((window_width-width)/ 2 ,(window_height-height)/ 2 ); //设置窗口位置 this .setsize(width, height); //设置窗口大小 this .setlayout(getlayout()); //设置窗口布局 this .setvisible( true ); //设置窗口可见 this .setdefaultcloseoperation(dispose_on_close); //设置窗口默认关闭方式 } public void paint(graphics g){ double x,y,r; //横纵坐标以及半径 image image = this .createimage(width, height); graphics pic = image.getgraphics(); for ( int i = - 2 ; i < 90 ; i++) { for ( int j = - 2 ; j < 90 ; j++) { r=math.pi/ 45 +math.pi/ 45 *i*( 1 -math.sin(math.pi/ 45 *j))* 18 ; x=r*math.cos(math.pi/ 45 *j)*math.sin(math.pi/ 45 *i)+width/ 2 ; y=-r*math.sin(math.pi/ 45 *j)+height/ 3 ; pic.setcolor(color.magenta); pic.filloval(( int )x, ( int )y, 2 , 2 ); } g.drawimage(image, 0 , 0 , this ); //生成图片 } } public static void main(string[] args) { new cardioid(); } } |
实现效果如下所示:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:https://blog.csdn.net/sumin1992/article/details/53467271