[原创]利用橡皮条技术画图

原创 2004年09月01日 19:11:00

[原创]利用橡皮条技术画图

在进行有绘制图形功能的软件开发中都会面临橡皮条技术,所谓橡皮条技术就是在绘制过程中出现鼠标移动的记录,当鼠标松开时绘制完整的图形。下面给出一个简单的橡皮条技术的应用,该应用是在APPLET上绘制一个矩形,并且只能绘制一个矩形,这对于图象裁剪很有帮助:

/**
 * @(#) xortest.java
 *
 * Copyright 2004 Opensource Develop Team. All rights reserved.
 */
import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

/**
 * 在APPLET上绘制一个矩形,当要进行第二次绘制时,上次绘制的矩形消失。
 * @author ODT
 * @see java.applet.Applet
 * @since JDK 1.3
 * @version 1.0 07/05/2004
 */
public class xortest extends Applet
{
     Point pressed, last; // 记录图形起点和鼠标不停移动时终点坐标
     boolean firstRect; // 只画一个矩形

     public void init()
     {
           addMouseListener(new MouseAdapter()
           {
                 public void mousePressed(MouseEvent e)
                 {
                       firstRect = true; // 确保一个矩形
                       pressed = e.getPoint(); // 获得起点坐标
                 }

                 public void mouseReleased(MouseEvent e)
                 {
                       if (pressed != null)
                       {
                             Point released = e.getPoint();
                             Rectangle clip = new Rectangle(); // clip为最终确定的矩形
                             Graphics g = getGraphics();
                             Dimension size = getSize();

                             try
                             {
                                   clip.x = pressed.x;
                                   clip.y = pressed.y;
                                   clip.width = Math.abs(released.x - pressed.x);
                                   clip.height = Math.abs(released.y - pressed.y);

                                   g.clearRect(0, 0, size.width, size.height);
                                   g.drawRect(clip.x,  clip.y, clip.width, clip.height); // 画最后的矩形
                             }
                             finally
                             {
                                   g.dispose();
                             }
                       }
                 }

                 public void mouseClicked(MouseEvent e)
                 {
                       repaint();
                 }
           });

           addMouseMotionListener(new MouseMotionAdapter()
           {
                 public void mouseDragged(MouseEvent e)
                 {
                       Point loc = e.getPoint(); // 鼠标当前位置
                       Graphics g = getGraphics();

                       try
                       {
                             g.setXORMode(getBackground()); // 设置绘图模式为XOR,橡皮条颜色为背景灰色
                             if (firstRect)
                             {
                                   firstRect = false; // 如果有矩形的画则设置为FALSE
                             }
                             else
                             {
                                   g.drawRect(pressed.x,  pressed.y,
                                           Math.abs(pressed.x - last.x),
                                           Math.abs(pressed.y - last.y));
                             }
                             g.drawRect(pressed.x,  pressed.y,
                                     Math.abs(loc.x - pressed.x),
                                     Math.abs(loc.y - pressed.y));
                             last = e.getPoint();
                       }
                       finally
                       {
                             g.dispose();
                       }
                 }
           });
     }
}

利用微软技术快速开发企业业务管理系统(ADP)

-
  • 1970年01月01日 08:00

利用橡皮筋技术实现的画图

       相信大家第一次在VC中写画图程序的时候,总是会碰到一些问题把,尤其是画直线的时候,总是会出现一些扇形,而不是我们想要的具有动感的直线,我经过反复实践,终于找到了解决的办法,就是每次画新的...
  • ct_hero0902
  • ct_hero0902
  • 2007-04-06 16:47:00
  • 1755

在MFC中,利用GDI绘制橡皮筋效果-直线,圆,椭圆,矩形

在MFC中利用GDI实现橡皮筋效果绘制直线、圆、椭圆、矩形
  • xingkongtianyuzhao
  • xingkongtianyuzhao
  • 2015-09-14 10:48:35
  • 2500

OpenGL学习笔记:(三)异或操作-橡皮条程序

一、异或操作 1.复制模式(GL_COPY) 1.1. 复制模式为Opengl默认的逻辑运算模式 2.1.画线的时候,如果采用复制模式,则是用当前状态机中的颜色像素替换窗口里相应位置的像素。...
  • sinat_20530977
  • sinat_20530977
  • 2015-04-02 19:07:07
  • 1494

OpenGL仿作橡皮筋技术

算是精仿吧,毕竟不一样,少了第二次点鼠标左键确认绘图,这个可以加上的: #include #include #include using namespace std ; #pragma c...
  • z8110
  • z8110
  • 2016-12-26 10:43:40
  • 727

MFC基于对话框的交互式画图程序(橡皮条画直线、圆、矩形、椭圆等)

  • 2013年12月12日 13:11
  • 14.74MB
  • 下载

OpenGL 橡皮筋技术

后天图形学考试,整理了下实验课上的OpenGL关于橡皮筋实验的代码。简单实现了如下功能:1.右键菜单功能响应2.右键选择画折线或矩形,可保存(书上例子演变)3.可选取画线或画矩形的颜色,线宽,像素大小...
  • ldl8818
  • ldl8818
  • 2011-04-23 23:50:00
  • 850

OPENGL实现橡皮条技术

  • 2011年04月12日 23:46
  • 2KB
  • 下载

绘图基础--橡皮筋画线

绘图基础--橡皮筋画线 橡皮筋画线:用户点击鼠标左键定下一个起点,然后把鼠标拖到目标终点,这时程序就会在起始点间画线。 // rubber.cpp #include // D...
  • gencheng
  • gencheng
  • 2013-09-22 16:21:32
  • 4276

利用绘图模式绘制橡皮筋矩形

利用绘图模式SetROP2,绘制橡皮筋矩形
  • cxf7394373
  • cxf7394373
  • 2010-12-07 23:38:00
  • 3663
收藏助手
不良信息举报
您举报文章:[原创]利用橡皮条技术画图
举报原因:
原因补充:

(最多只允许输入30个字)