分享
分销 收藏 举报 申诉 / 32
播放页_导航下方通栏广告

类型小小画图板开发——JAVA课程设计报告.doc

  • 上传人:快乐****生活
  • 文档编号:11004791
  • 上传时间:2025-06-25
  • 格式:DOC
  • 页数:32
  • 大小:1.77MB
  • 下载积分:12 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    小小 画图板 开发 JAVA 课程设计 报告
    资源描述:
    《移动互联开发》课程设计报告 题目:小小画图板开发 班 级: 姓 名: 学 号: 组 员: 目录 一:程序设计的目的和意义 二:程序设计: (一):程序基本组成框架和结构 (二):画图板相关操作 三:系统功能设计分析 四:程序结构说明 五:程序绘图效果示意图 六:程序源代码及其分析说明 七:总结 小小画图板开发 一 :程序设计的目的和意义 用过微软Windows操作系统的人一定都对Windows自带的画图板非常的熟悉。同图像处理软件界的“大哥大”Photoshop比起来,它虽然不及Photoshop的功能强大、内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑、简单实用等其它绘图软件所不具备的优点。同时它的风格也被许多其它绘图软件所效仿。 通过本绘图程序的编写,我们可以看到如何运用自己已经掌握的知识,自己动手来完成一个Java绘图程序,通过整个流程的熟悉以及对程序组织结构和框架的理解,也可以极大的促进我们对Java程序和面向对象程序设计的认识和掌握。 通过本次课程的学习,我们可以更加系统地学习和了解如何从整体上设计和实现一个程序,这对我们今后学习、开发和设计更大更复杂的程序有着很大的帮助。 二 :程序设计 本程序完成的是一个类似于Windows画图板的绘图程序。由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项: 1. 新建一个空白图形文件:用于绘制新的图形。 2. 打开或保存一个图形文件,便于对图形文件的管理。 3. 绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。 4. 可以用鼠标在绘图面板上单击拖动进行随笔画。 5. 橡皮擦:可以将已绘制好的图形擦掉。 6. 添加文字:可以在绘图区域内添加文字。 7. 选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体、隶书、华文彩云、仿宋_GB2312、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数组,是的可以随意添加系统支持的任何字体。大大方便和简化了程序设计。 8. 选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:①同时选中两者、②只选择其中一种、③两者都不选中。 9. 设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩、生动活泼。 10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不一样的。①当作用于绘制图形组件时,它的作用是改变画笔绘制线条的粗细;②当作用于文字时,它的作用是改变文字的大小。 由此可以看到,虽然我们的画图板程序不及那些专业的绘图程序,但是,“麻雀虽小,五脏俱全”,它已经具备了一个绘图软件所应该有的基本功能和操作。通过对本程序的分析,我们可以更加系统地学习和了解如何从整体上设计和实现一个程序。 (一):程序基本组成框架和结构 1. 一组基本图形按钮,包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、FRect(实心矩形)、Oval(椭圆)、FOval(实心椭圆)、Circle(圆)、FCircle(实心圆)、RoundRect(圆角矩形)、FrRect(实心圆角矩形)、Rubber(橡皮擦)、Word(文字)。 这些基本图形都继承于同一个父类:drawings。drawings 具有变量(属性): int x1,x2,y1,y2; //用来存放相应图形元素的坐标 int R,G,B; //用来存放图形色彩颜色信息 float stroke; //用来存放画笔粗细 int type; //用来保存图形类型 String s1; //用来保存输入文字字符串 String s2; //用来保存字体类型字符串 同时,drawing还具有方法: void draw ( Graphics2D g2d ) {} ; draw()方法中用到了Java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写了此方法。这就是Java程序中类的继承的概念。它对于程序代码的重用是很重要的,将极大的方便和简略程序代码。 2. 此外,程序中还包括一下三个基本操作按钮: ① 新建(New):新建一个图形文件。 ② 打开(Open):打开一个图形文件。 ③ 保存(Save):保存当前图形文件。 3. 选择颜色和设置当前画笔粗细的按钮分别为:颜色(Color)、线条粗细(Stroke)。 4. 选择当前字体风格的选择框为:粗体(BOLD)、斜体(ITALIC),用以设置当前字体的风格。 5. 选择当前字体的下拉式复选框为:Styles。 6. 菜单条及其组成: ① 文件(File)菜单项,包括:New(新建一个图形文件)、Load(打开一个图形文件)、Save(保存当前图形文件)、Exit(退出程序)。 ② 颜色(Color)菜单项:用来设置当前颜色。 ③ 线条粗细(Stroke)菜单项:用来设置当前画笔粗细。 ④ 帮助(Help)菜单项:有关的程序帮助提示。 完成的程序界面效果如下图: (二):画图板相关操作 1. 新建一个图形文件 单击工具栏上的图标,或选择File→New菜单,则清除当前所绘制的图像,回到初始画面。 2. 打开已有的文件 单击工具栏上的图标,或选择File→Load菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择要打开的文件。如下图: 3. 保存 单击工具栏上的图标,或选择File→Save菜单,则弹出要求保存文件对话框。如下图: 4. 选择字体风格 在工具栏区域 ,可以选择相应的字体风格,有粗体、斜体和粗斜体三种可供选择。 5. 选择字体 在工具栏区域,可以选择字体,本程序中有如下几种字体可供选择:宋体、隶书、华文彩云、仿宋_GB2312、华文行楷、方正舒体、Time New Roman、Serif、Monospaced、SonsSerif、Garamond。 三 :系统功能设计分析 画板主要由以下几个部分组成: 1. 主窗体的设计。主类(QingDrawPad)用来生成主界面,完成画图板的主要框架。主类由JFrame派生出来。主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。 2. 菜单栏和工具栏的设计。菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。其中①文件菜单栏包括文件的新建、打开、保存等选项;②颜色菜单栏可以进行颜色选择;③线条粗细菜单栏设置线条的粗细;④提示菜单栏给出提示信息。 工具栏由新建、打开和保存文件按钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。在主类中添加并对菜单栏和工具栏添加事件监听。 3. 事件响应的处理。对菜单栏、工具栏和用鼠标画图的事件响应进行处理。 ① 菜单栏中文件的新建、打开和保存菜单事件的处理:Java把每个文件都视作顺序字节流。如果要在Java中进行文件处理,则必须用到Java.io包。这个包定义了一些流类,选用FileInputStream(从文件中读入数据)和FIleOutputStream(向文件输出数据),通过建立这些文件的对象便可以打开文件。这些流相应地从InputStream和OutputStream派生,这些文件均使用文件流,所以必须将文件结构化以适应程序的要求。我们需要对保存的对象序列化,然后以输出流的方式保存。在程序中用newFile()、loadFile()和saveFile()三个函数分别实现文件的新建、打开和保存。 ② 工具栏事件的处理:主要有一些Button组成。我们用ButtonHandler内部类处理基本单元事件,ButtonHandler1内部类处理新建、打开和保存文件按钮,在画图类DrawPanel中定义CreateNewItem()函数处理工具栏中的画图事件。 ③ 鼠标画图:由于画图板主要是用来画图,所以需要在程序中添加对鼠标按下、拖动、进入、退出、移动和单机事件进行监听并进行处理。内部类mouseA定义了完成鼠标按下、松开、进入、退出事件响应。内部类mouseB完成鼠标拖动和移动事件响应。 4. 画图的基本功能。在程序设计中用到了动态绑定,我们可以提取他们的公共属性,先建立一个父类,然后建立各个子类,继承父类中的方法并将父类中的draw函数重写。一些关于图形形状的类,最主要是用于画图、字体和橡皮擦等基本类型。如Circle、Triangle、Rectangle,它们都是有超类(Object类)派生的。在面向对象编程中,每个类都有画出自己的能力,每个类都有自己的draw函数,但每种形状的draw函数都不一样,但在绘制任何形状时,只需简单调用父类drawing的draw方法,然后让程序动态地根据对象的类型决定使用哪个子类的draw方法。为了使画出的图形更加美观,我们在draw函数中使用了Graphics2D的对象的引用。这样可以在不改变原程序的情况下,添加扩展的图形,是程序变得更加强大。同时,为了文件的保存,父类实现Serialize接口,将对象线性化。 四 :程序结构说明 本程序主体为一个文件:QingDrawPad.java。其中包括的程序段有: ① QingDrawPad():构造函数,用以初始化。 ② chooseColor():选择当前绘图颜色程序段。 ③ setStroke():设置当前画笔粗细程序段。 ④ loadFile():调用图形文件程序段。 ⑤ newFile():新建一个图形文件程序段。 ⑥ saveFile():保存当前所绘制图形程序段。 ⑦ creatNewItem():新建一个基本图形单元程序段。 相应的内部类有: ① ButtonHandler:用来处理基本图形单元的按钮事件。 ② ButtonHandler1:用来处理New、Open、Save三个操作按钮的按钮事件。 ③ DrawPanel:用来创建绘图区域的子类。 ④ MouseA:继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。 ⑤ MouseB:继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动的相应事件操作。 此外,还继承了父类drawings的基本图形子类,如前所述,这里不再重复。 五 :程序绘图效果示意图 我们可以看到,整个程序界面很简洁,而且界面操作、提示内容全部是中文,一目了然。在左上方的菜单栏里有文件、颜色、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行相应的操作。下面一排是工具栏的工具按钮,从左到右依次为:新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条粗细设置按钮、文字添加按钮、粗体字体选择框、斜体字体选择框、字体选择下拉式选择框。整个工具栏是可以拖动的,可以将它拖动到程序窗口的任意位置。工具栏下面的整个白色区域就是绘图区域,即绘图面板,它的大小可以随着窗口的大小自动调整。在窗口的最底部是程序设计作者标注,以及鼠标状态提示条,可以显示当前的鼠标状态,包括进出窗口、移动、单击、松开等。具体效果如下列图所示: 六 :程序源代码及其分析说明 package WuDrawPad; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; public class QingDrawPad extends JFrame //主类,扩展了JFrame类,用来生成主界面 { private ObjectInputStream input; private ObjectOutputStream output; //定义输入输出流,用来调用和保存图像文件 private JButton choices[]; //按钮数组,存放以下名称的功能按钮 private String names[] ={ "New", "Open", "Save", //这三个是基本操作按钮,包括"新建"、"打开"、"保存" /*下面是我们的画图板上面有的基本的几个绘图单元按钮*/ "Pencil", "Line", "Rect", "FRect", "Oval", "FOval", "Circle", "FCircle", "RoundRect", "FrRect", "Rubber", "Color", "Stroke", "Word" }; private String styleNames[]={ " 宋体 " , " 隶书 " , " 华文彩云 " , " 仿宋_GB2312 " , " 华文行楷 " , " 方正舒体 " , " Times New Roman " , " Serif " , " Monospaced " , " SonsSerif " , " Garamond " }; private Icon items[]; private String tipText[]={ //这里是鼠标移动到相应按钮上面上停留时给出的提示说明条 "新建一个文件", "打开一个文件", "保存当前文件", "绘制线条", "绘制直线", "绘制空心矩形", "绘制实心矩形", "绘制空心椭圆", "绘制实心椭圆", "绘制空心圆形", "绘制实心圆形", "绘制空心圆角矩形", "绘制实心圆角矩形", "橡皮擦", "选择颜色", "设置线条粗细", "输入文字" }; JToolBar buttonPanel ; //定义按钮面板 private JLabel statusBar; //显示鼠标状态的提示条 private DrawPanel drawingArea; //画图区域 private int width=850,height=550; drawings[] itemList=new drawings[5000]; //用来存放基本图形的数组 private int currentChoice=3; //设置默认画图状态为随笔画 int index=0; //当前已经绘制的图形数目 private Color color=Color.black; //当前画笔颜色 int R,G,B; //用来存放当前色彩值 int f1,f2; //用来存放当前字体风格 String style1; //用来存放当前字体 private float stroke=1.0f; //设置画笔粗细,默认值为1.0f JCheckBox bold,italic; //bold为粗体,italic为斜体,二者可以同时使用 JComboBox styles; public QingDrawPad() { super("卿乐绘图画板(中国风)"); JMenuBar bar=new JMenuBar(); //定义菜单条 JMenu fileMenu=new JMenu("文件"); //fileMenu.setMnemonic('F'); //新建文件菜单条 JMenuItem newItem=new JMenuItem("新建"); newItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { newFile(); //如果被触发,则调用新建文件函数段 } } ); fileMenu.add(newItem); //保存文件菜单项 JMenuItem saveItem=new JMenuItem("保存"); saveItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { saveFile(); //如果被触发,则调用保存文件函数段 } } ); fileMenu.add(saveItem); //打开文件菜单项 JMenuItem loadItem=new JMenuItem("打开"); loadItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { loadFile(); //如果被触发,则调用打开文件函数段 } } ); fileMenu.add(loadItem); fileMenu.addSeparator(); //退出菜单项 JMenuItem exitItem=new JMenuItem("退出"); exitItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); //如果被触发,则退出画图板程序 } } ); fileMenu.add(exitItem); bar.add(fileMenu); //设置颜色菜单条 JMenu colorMenu=new JMenu("颜色"); //选择颜色菜单项 JMenuItem colorItem=new JMenuItem("选择颜色"); colorItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { chooseColor(); //如果被触发,则调用选择颜色函数段 } } ); colorMenu.add(colorItem); bar.add(colorMenu); //设置线条粗细菜单条 JMenu strokeMenu=new JMenu("线条粗细"); //设置线条粗细菜单项 JMenuItem strokeItem=new JMenuItem("设置线条粗细"); strokeItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { setStroke(); } } ); strokeMenu.add(strokeItem); bar.add(strokeMenu); //设置提示菜单条 JMenu helpMenu=new JMenu("帮助"); //设置提示菜单项 JMenuItem aboutItem=new JMenuItem("关于画板"); aboutItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "卿乐画板\n作者:吴斌伟\n指导教师:郭成\n于2011年1月11日,厦门理工学院 数理系 实验楼4#416 ", " 画图板说明 ", JOptionPane.INFORMATION_MESSAGE ); } } ); helpMenu.add(aboutItem); bar.add(helpMenu); items=new ImageIcon[names.length]; //创建各种基本图形的按钮 drawingArea=new DrawPanel(); choices=new JButton[names.length]; buttonPanel = new JToolBar( JToolBar.VERTICAL ) ; buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ; ButtonHandler handler=new ButtonHandler(); ButtonHandler1 handler1=new ButtonHandler1(); //导入我们需要的图形图标,这些图标都存放在与源文件相同的目录下面 for(int i=0;i<choices.length;i++) { items[i]=new ImageIcon(names[i] + ".gif"); choices[i]=new JButton("",items[i]); choices[i].setToolTipText(tipText[i]); buttonPanel.add(choices[i]); } //将动作侦听器加入按钮里面 for(int i=3;i<choices.length-3;i++) { choices[i].addActionListener(handler); } choices[0].addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { newFile(); } } ); choices[1].addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { loadFile(); } } ); choices[2].addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { saveFile(); } } ); choices[choices.length-3].addActionListener(handler1); choices[choices.length-2].addActionListener(handler1); choices[choices.length-1].addActionListener(handler1); //字体风格选择 styles=new JComboBox(styleNames); styles.setMaximumRowCount(8); styles.addItemListener( new ItemListener(){ public void itemStateChanged(ItemEvent e) { style1=styleNames[styles.getSelectedIndex()]; } } ); //字体选择 bold=new JCheckBox("粗体"); italic=new JCheckBox("斜体"); checkBoxHandler cHandler=new checkBoxHandler(); bold.addItemListener(cHandler); italic.addItemListener(cHandler); JPanel wordPanel=new JPanel(); buttonPanel.add(bold); buttonPanel.add(italic); buttonPanel.add(styles); styles.setMinimumSize( new Dimension ( 50, 20 ) ); styles.setMaximumSize(new Dimension ( 100, 20 ) ); Container c=getContentPane(); super.setJMenuBar( bar ); c.add(buttonPanel,BorderLayout.NORTH); c.add(drawingArea,BorderLayout.CENTER); statusBar=new JLabel(); c.add(statusBar,BorderLayout.SOUTH); statusBar.setText(" 欢迎使用卿乐绘图画板→O(∩_∩)O作者:吴斌伟→指导教师:郭成"); createNewItem(); setSize(width,height); show(); } //按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作 public class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { for(int j=3;j<choices.length-3;j++) { if(e.getSource()==choices[j]) {currentChoice=j; createNewItem(); repaint();} } } } //按钮侦听器ButtonHanler1类,用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作 public class ButtonHandler1 implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==choices[choices.length-3]) {chooseColor();} if(e.getSource()==choices[choices.length-2]) {setStroke();} if(e.getSource()==choices[choices.length-1]) {JOptionPane.showMessageDialog(null, "请点击绘图板选择输入文本的位置", "提示",JOptionPane.INFORMATION_MESSAGE ); currentChoice=14; createNewItem(); repaint(); } } } //鼠标事件mouseA类,继承了MouseAdapter,用来完成鼠标相应事件操作 class mouseA extends MouseAdapter { public void mousePressed(MouseEvent e) {statusBar.setText(" 作者:吴斌伟→厦门理工学院数理系09级信计1班→鼠标按下位置:[" + e.getX() + ", " + e.getY() + "]");//设置状态提示 itemList[index].x1=itemList[index].x2=e.getX(); itemList[index].y1=itemList[index].y2=e.getY(); //如果当前选择的图形是随笔画或者橡皮擦,则进行下面的操作 if(currentChoice==3||currentChoice==13) { itemList[index].x1=itemList[index].x2=e.getX(); itemList[index].y1=itemList[index].y2=e.getY(); index++; createNewItem(); } //如果当前选择的图形式文字输入,则进行下面操作 if(currentChoice==14) { itemList[index].x1=e.getX(); itemList[index].y1=e.getY(); String input; input=JOptionPane.showInputDialog( "请输入你想要输入的文本"); itemList[index].s1=inpu
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:小小画图板开发——JAVA课程设计报告.doc
    链接地址:https://www.zixin.com.cn/doc/11004791.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork