XP简易画图板实现过程

本文介绍了如何实现XP简易画图板,包括创建窗体、设置形状和颜色面板,以及实现画直线、圆、矩形等功能。通过鼠标监听处理坐标值,允许用户自由选择图形和颜色进行绘制。在实现过程中,需要注意图形绘制的方向和参数设置,以确保画图板功能的完整性和用户体验。
摘要由CSDN通过智能技术生成
  •                                                                            XP简易画图板实现过程


       大致过程:创建一个窗体,在窗体上加三个面板,一个形状区域,一个颜色区域,一个画图区域

    界面:


三个面板色创建及设置大小颜色:

         JPanel panel_xz = new JPanel();
         JPanel panel_color = new JPanel();
         JPanel panel_hb = new JPanel();

         panel_xz.setBackground(Color.green);
         panel_color.setBackground(Color.gray);
         panel_hb.setBackground(Color.white);
         panel_xz.setPreferredSize(new Dimension(80, 550));
         panel_color.setPreferredSize(new Dimension(40, 40));
         panel_hb.setPreferredSize(new Dimension(100, 550));
    
   
  怎么把十六个形状加到面板上去?

          通过创建一个数组,把十六个形状加到数组里面去,在通过for循环遍历数组把十六个形状加到面板上去

          

               

          系统怎么知道用户点击的是哪个按钮呢,所以要在每个按钮上添加一个按钮标记

                                      // 设置按钮上的标记
                                     button.setActionCommand(tp[i]);

                 最后别忘了给这些按钮加监听



                  颜色面板:

                         我们从图中看到颜色面板当中也有许多的颜色按钮,所以我们可以跟形状面板中的按钮一样通过创建

                        一个颜色数组,吧所有颜色按钮加到数组中,在通过for循环吧按钮加到面板上去

                       

怎么样才能让用户随心的选择颜色区话想要的图形呢, 在这里有两种方法,一个是在一个类中写,另一个是再新建一个类,我就是新建一个类来实现的

                                  

但是怎么样才能在画图板上点击按钮得到我们想要画的图形呢,我们在这里实现了三个画图功能,直线 ,圆,矩形

首先花直线我们应该要得到两个坐标值,但是怎么样才能的到两个坐标值呢,这个是通过创建鼠标监听来实现的

                     

在按钮按下的时候获取一个坐标值,在按钮松开的时候获取一个坐标值,这样两个坐标值就构成了一条直线

                                             

                            画圆:

                      if (anniu == "oval") {
                    // if (x1 > x2 && y1 > y2) {
                    g.drawOval(Math.min(x1, x2), Math.min(y1, y2),
                            Math.abs(x2 - x1), Math.abs(y2 - y1));
                            }

                        画矩形

                           if (anniu == "round_rect") {
                    // if (x1 < x2 && y1 > y2) {
                    g.drawRoundRect(Math.min(x1, x2), Math.min(y1, y2),
                            Math.abs(x1 - x2), Math.abs(y1 - y2), 25, 15);
                }

                画铅笔和喷漆

                   当然画铅笔和喷漆跟画直线和圆这些有点不一样,他是通过这个按钮监听来写的:在画这些图形的时候用到的是这个画笔       ( public Graphics2D g2d;

             MouseMotionListener mouse_listener = new MouseMotionListener() {

            public void mouseMoved(MouseEvent e) {
            }
            public void mouseDragged(MouseEvent e) {

                                  if (anniu == "pencil") {
                                  x2 = e.getX();
                                 y2 = e.getY();
                              g.drawLine(x1, y1, x2, y2);
                                    x1 = x2;
                                   y1 = y2;
                         }

                             if (anniu == "airbrush") {
                            x3 = e.getX();
                             y3 = e.getY();
                            Random rand = new Random();
                             g.setColor(Color.red);
                             // 使用循环画20个小点
                              for (int i = 0; i < 20; i++) {
                        // 在20个像素范围内随机一个值
                              int tempx = rand.nextInt(20);
                             int tempy = rand.nextInt(20);



总结:在制作XP简易画板的时候,最应该注意的应该是在自己的脑海中要知道怎样一步步的去实现这个功能,这个功能是怎么样实现的,实现的过程中会有哪些问题,这些都要我们自己去构造,去调用哪些方法,特别是在画哪些图案的时候,可能能够实现功能,可是当你画出来的时候才发现画的时候只有一个方向能画出来, 其他的方向就画不出来,还有给哪些参数的时候,要明白哪些坐标真正的位置,才能够得到正确的值,这样才能制作出一个完整的画图板,,当然最在写这些代码的时候要用心   


                                              ^_^   ^_^   fack  加油吧  GG


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值