`
codeone
  • 浏览: 46194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Canvas画直线程序

    博客分类:
  • java
 
阅读更多

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 * Date: 11-12-30
 * Time: 16:08:00
 */
public class DrawLine extends JFrame implements ActionListener {
	private class MyCanvas extends Canvas {
		private String s_color;

		public void setS_color(String s_color) {
			this.s_color = s_color;
		}
		int x1, x2, y1, y2;
		public MyCanvas() {
			addMouseListener(new MouseAdapter() {
				public void mousePressed(MouseEvent event) {
					x1 = event.getX();
					y1 = event.getY();
				}
				public void mouseReleased(MouseEvent event) {
					x2 = event.getX();
					y2 = event.getY();
					Graphics g = getGraphics() ;
					if("red".equals(s_color)){
						g.setColor(Color.RED);
					} else{
						g.setColor(Color.BLUE);
					}
					g.drawLine(x1,y1,x2,y2);
				}
			});
		}
	}
	JPanel p = new JPanel();
	JButton b1 = new JButton("red"){{
        addActionListener(DrawLine.this);
    }};
	JButton b2 = new JButton("blue"){{
        addActionListener(DrawLine.this);
    }};
	MyCanvas canvas = new MyCanvas();

	public void actionPerformed(ActionEvent e) {
		canvas.setS_color(e.getActionCommand());
	}

	public DrawLine() {
		setFrame();
		getP().add(b1);
		JPanel buttom = new JPanel();
		buttom.setLayout(new GridLayout(1, 2));
		buttom.add(b1);
		buttom.add(b2);
		getP().add(buttom, BorderLayout.SOUTH);
		getP().add(canvas, BorderLayout.CENTER);
	}

	private JPanel getP() {
		return p;
	}

	private void setFrame() {
		setLayout(new BorderLayout());
		getP().setLayout(new BorderLayout());
		add(getP());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setVisible(true);
	}

	public static void main(String[] args) throws Exception {
		new DrawLine();
	}
}
 
分享到:
评论

相关推荐

    微信小程序canvas实现直线自由移动

    在微信小程序中,Canvas是一个非常重要的组件,它允许开发者在界面上绘制图形,包括直线、曲线、圆形等。本文将详细讲解如何利用Canvas API在微信小程序中实现直线的自由移动。 首先,我们要理解Canvas的基本概念。...

    微信小程序canvas画布绘制矩形、椭(圆)、直线、文字

    本文将深入探讨如何使用Canvas API在微信小程序中绘制矩形、椭圆、直线以及添加文字。 首先,我们需要在小程序的页面JSON配置文件中引入Canvas组件,并在对应的WXML文件中进行布局。例如: ```json { "component...

    canvas画板工具 uni-modules、画板、canvas、签名、电子签名、简约风、万能、免费、支持横竖屏

    画板工具中的曲线和直线绘制功能,通常通过定义起始点和终点,然后利用`moveTo()`和`lineTo()`方法在canvas上绘制。画圆则使用`arc()`方法,指定圆心坐标、半径以及开始和结束角度。方形则是通过绘制矩形实现,利用`...

    WPF用鼠标在Canvas画线

    在WPF中实现鼠标在Canvas上画线的功能,可以通过监听鼠标的事件并结合图形绘制API来完成。以下是实现这一功能的关键知识点和步骤: ### 1. 基本概念 - **WPF**:Windows Presentation Foundation是.NET Framework的...

    微信小程序canvas实现直线缩放

    在微信小程序中,Canvas是一个非常重要的组件,它允许开发者在界面上绘制图形,包括直线、曲线、图片等。本文将详细讲解如何利用Canvas在微信小程序中实现直线的缩放功能。 首先,我们要了解Canvas的基本使用。...

    JAVA 画直线源程序

    在本“JAVA 画直线源程序”中,我们将会探讨如何利用Java的AWT(Abstract Window Toolkit)或Swing库来实现这一功能。这些库为开发者提供了丰富的组件和工具,用于创建复杂的图形用户界面。 首先,我们需要了解Java...

    微信小程序画布canvas

    微信小程序中的画布组件`canvas`是开发过程中用于动态绘图的重要工具,它允许开发者在小程序界面中绘制图形、文字、图像等元素,为用户提供丰富的交互体验。在本篇文章中,我们将深入探讨`canvas`的相关知识点,包括...

    基于canvas的流程图绘制程序

    例如,`beginPath()`开始一个新的路径,`moveTo(x, y)`移动到指定位置,`lineTo(x, y)`画一条直线,`fill()`或`stroke()`填充或描边当前路径。 2. **流程图元素的表示**:流程图通常包含多个节点(代表步骤)和连接...

    java画线程序

    总结来说,"java画线程序"这个主题涵盖了Java图形编程的基础知识,包括使用`Graphics`类及其方法来绘制直线、矩形和圆。通过`huaxian`和`huaxian2`这两个源代码文件,我们可以学习到不同的实现方式和技巧,进一步...

    Java 通过Canvas实现绘图功能.rar

    可以画出直线、矩形、圆角矩形、三角形、文字等,把缓冲区图像的内容绘制到画布上,重载抽象类MIDlet的抽象方法startApp(),重载抽象类MIDlet的方法destroyApp(),Java Canvas绘图程序,新手必看代码。

    简单的画直线、画图像、画形状程序,C#源代码

    在C#编程中,画直线、画图像以及画形状是图形用户界面(GUI)开发的基础。这个主题主要涉及Windows Forms或WPF应用,其中Windows Forms是.NET Framework中的一个经典库,而WPF(Windows Presentation Foundation)是...

    小程序canvas经典应用教材.zip

    "小程序canvas经典应用教材.zip"这个压缩包显然包含了一套专门针对小程序Canvas 2D接口的学习资料。 Canvas 2D API 是HTML5中的一个重要组成部分,它为Web开发者提供了在网页上绘制图形的能力。在小程序环境中,自...

    delphi 窗体上画任意方向带箭头的直线全套源码

    delphi 窗体上画任意方向带箭头的直线全套源码,程序启动后在主窗体直接用鼠标左键拖动可画出任意方向的带箭头的直线。

    HTML5 canvas多功能涂鸦画板绘图代码.zip

    这个"HTML5 canvas多功能涂鸦画板绘图代码"项目利用了canvas和jQuery库来实现一个功能丰富的在线绘图应用程序。以下是关于这个项目的详细知识点: 1. **HTML5 Canvas**:Canvas是一个HTML5标签,它提供了一个二维...

    canvas实现粒子场的动画效果

    这通常使用直线绘制函数`context.beginPath()`、`context.moveTo()`和`context.lineTo()`完成。 5. **颜色和透明度变化**: 为了增加视觉效果,粒子的颜色和透明度可以在动画过程中动态改变。例如,可以设置一个...

    html5 canvas核心技术图形、动画与游戏开发完整源码

    2. **绘图路径**:使用`beginPath()`、`moveTo()`、`lineTo()`、`arc()`等方法可以创建和管理绘图路径,绘制直线、曲线、圆弧等形状。路径可以用来填充或描边。 3. **颜色与样式**:`fillStyle`和`strokeStyle`属性...

    mfc在对话框中画直线

    **MFC在对话框中画直线** MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于构建Windows应用程序,尤其是基于文档/视图架构的应用。在这个标题为“mfc在对话框中画直线”的主题中,我们将深入探讨...

    canvas js svg 写的画板/黑板程序

    这个程序标题提到的"canvas js svg 写的画板/黑板程序"就是一个典型的例子,它利用了这些技术来实现用户绘画、标注的功能,并且具有良好的浏览器兼容性,支持到IE9。 Canvas是HTML5中的一个核心元素,它提供了一个...

    一个简单的可以运行的画线程序

    【标题】:“一个简单的可以运行的画线程序” 在计算机编程中,画线程序是一种基本的图形用户界面(GUI)应用程序,它允许用户在屏幕上绘制线条。这个“一个简单的可以运行的画线程序”旨在帮助初学者理解如何实现...

    MFC画直线及简单图形

    在这个主题中,“MFC画直线及简单图形”涉及到的是如何在MFC应用中利用图形设备接口(GDI,Graphics Device Interface)来绘制直线和一些基础形状,如五角星。 Bresenham算法是计算机图形学中的一个重要算法,用于...

Global site tag (gtag.js) - Google Analytics