`
joe.feng
  • 浏览: 134937 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

一个简单的画板

    博客分类:
  • Flex
阅读更多

Flex中画图,有两种方法:

1、直接在canvas中画

 

private function init():void{
	cav.graphics.lineStyle(1, 0x000000, 1, false);
	cav.graphics.lineTo(200, 200);
}
<mx:Canvas id="cav" width="300" height="300" />

 

2、在Sprite中画,然后将其添加到舞台中。所有显示对象都必须继承UIComponent类,但是Sprite并没有继承UIComponent,如果想显示Sprite,就先要把Sprite添加到UIComponent中,然后再添加到舞台中。

 

sprite = new Sprite();
sprite.graphics.lineStyle(1,0x000000,1,true);
sprite.graphics.lineTo(event.localX, event.localY);
ui = new UIComponent();
ui.addChild(sprite);
cav.addChild(ui);

 

下面例子实现了一个简单的画板,只实现了画线、撤销、还原、清屏等简单的部分功能,目的是研究Flex画板的原理。

 

private var sprite:Sprite;				//作画的载体
private var ui:UIComponent;				//包装Sprite,然后才能添加到舞台上
private var index:int = 0;				//作画的操作数,也是添加到舞台的每个对象的索引
private var flag:Boolean = false;		//表示鼠标是否按下
private var arr:Array = new Array();	//被撤销的对象列表,以备还原

/**
 * 按下鼠标,初始化画笔
 */
protected function cav_mouseDownHandler(event:MouseEvent):void
{
	sprite = new Sprite();
	sprite.graphics.clear();
	sprite.graphics.lineStyle(1,0x000000,1,true);
	sprite.graphics.moveTo(event.localX, event.localY);
	sprite.graphics.lineTo(event.localX, event.localY);
	ui = new UIComponent();
	ui.addChild(sprite);
	cav.addChildAt(ui, index++);
	flag = true;
}

/**
 * 如果鼠标按下,并滑动,开始画画
 */
protected function cav_mouseMoveHandler(event:MouseEvent):void
{
	if(flag == true){
		sprite.graphics.lineTo(event.localX, event.localY);
	}
}

/**
 * 停止画画
 */
protected function cav_mouseUpHandler(event:MouseEvent):void
{
	flag = false;
}

/**
 * 撤销
*/
protected function btnUndo_clickHandler(event:MouseEvent):void
{
	if(index <= 0){
		return;
	}
	arr.push(cav.getChildAt(--index));
	cav.removeChildAt(index);
}

/**
 * 还原
 */
protected function btnRedo_clickHandler(event:MouseEvent):void
{
	if(arr != null && arr.length > 0){
		cav.addChildAt(arr.pop(), index++);
	}
}

/**
 * 清屏
 */
protected function btnClear_clickHandler(event:MouseEvent):void
{
	if(index >= 0){
		cav.removeAllChildren();
		index = 0;
	}
	if(arr != null && arr.length > 0){
		arr.splice();
	}
}

<mx:VBox id="vb" width="100%" height="100%">		
	<mx:HBox>
		<mx:Button id="btnUndo" label="撤销" click="btnUndo_clickHandler(event)" />
		<mx:Button id="btnRedo" label="还原" click="btnRedo_clickHandler(event)" />
		<mx:Button id="btnClear" label="清屏" click="btnClear_clickHandler(event)" />
	</mx:HBox>
	<mx:Canvas id="cav" width="500" height="500" backgroundColor="#FFFFFF" 
			   mouseDown="cav_mouseDownHandler(event)"
			   mouseMove="cav_mouseMoveHandler(event)"
			   mouseUp="cav_mouseUpHandler(event)"/>
</mx:VBox>
分享到:
评论

相关推荐

    一个简易画板的实现 VS2010 QT4.8做的 C++

    一个简易画板的实现 有简单的画图,画图形,改颜色功能

    canvas实现一个简易画板

    至此,我们就完成了一个基本的基于Canvas的简易画板,用户可以在上面自由绘画,并能将作品导出为PNG图片。在实际项目中,你可能还需要考虑其他功能,比如清除画布、改变画笔颜色和大小等。Canvas API提供了丰富的...

    第一个简单画板

    "第一个简单画板"是一个基于源码开发的工具项目,主要目标是实现一个基础的绘画应用程序。这个项目可能是一个初学者或爱好者为了学习图形用户界面(GUI)编程、事件处理和基本绘图功能而创建的。通过分析和理解这个...

    Android简易画板源码

    在Android开发中,创建一个简易画板应用是一个常见的练习,它可以帮助开发者深入理解自定义View的概念和绘图机制。这个源码项目就是基于这样的目的,使用了Android的自定义View来构建一个基本的画板功能,让用户可以...

    Android简易画板PaintOnTouchEvent

    在Android开发中,创建一个简易画板(PaintOnTouchEvent)是一项常见的需求,它涉及到自定义View、触摸事件处理以及用户交互的设计。这个项目的核心在于如何有效地处理OnTouchEvent,以实现用户在屏幕上绘制图形的...

    C# 2010 简易画板

    【C# 2010 简易画板】是一个基于C# 2010编程语言开发的简易画图应用程序。这个程序为用户提供了一个简单的画板界面,允许用户进行基本的绘画操作,比如绘制直线、曲线、矩形、椭圆等图形,并能进行颜色选择、画笔...

    简易画板.py

    使用python做的一个简易画板,能够实现画点、画直线、画多边形、画椭圆等功能,其中包含了对Tkinter的操作以及对于GUI的操作,希望对python初学者能够有所帮助

    C# GDI简单画板的实现

    在本文中,我们将深入探讨如何使用C#和GDI+(Graphics Device Interface)来实现一个简单的画板应用程序。GDI+是.NET Framework中用于图形绘制的基础组件,它提供了丰富的功能,使得开发者可以创建出交互式的可视化...

    win程简易画板

    "win程简易画板"是一个基于Windows编程环境的简单绘图应用程序,旨在提供基础的绘画功能,如颜色变换、线条粗细调整以及绘制多种形状。这个项目可能使用了如Microsoft Visual Studio这样的开发工具,结合C++或C#等...

    简易画板的实现

    在移动设备上实现一个简易画板是许多开发者和学习者早期接触编程时的常见项目。这个项目可以帮助初学者理解触摸事件处理、图形绘制以及颜色管理等基本概念。在这个简易画板应用中,用户可以通过手指在屏幕上画画,...

    css3+html5运用javascript做一个简易画板代码.docx

    `&lt;canvas&gt;`本身并不具备绘图能力,它仅仅是一个容器。所有的绘图工作都是通过JavaScript来完成的。 **示例代码片段:** ```html &lt;canvas id="c1" width="800" height="600"&gt;&lt;/canvas&gt; &lt;li&gt;&lt;span&gt;颜色:&lt;/span&gt;...

    C#简易画板

    在这个简易画板应用中,我们可能创建一个`Form`对象作为主窗口,并在其中添加一个无边框的`PictureBox`控件,用于显示画布。通过设置`PictureBox`的`SizeMode`属性为`StretchImage`,可以让其完全填充窗体空间。 ...

    mfc制作画板

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来创建一个基本的“画板...这个简单的画板程序为学习和实践MFC提供了一个很好的起点,同时也可以作为基础,进一步扩展成功能更丰富的图形编辑器。

    用qt 编写简易画板

    这个简易画板程序是学习Qt GUI编程的一个良好起点,涵盖了基本的窗口创建、事件处理和图形绘制。随着技能的提升,可以进一步优化程序,如添加撤销/重做功能、多层绘图、自定义形状工具等。Qt提供的强大功能使得...

    完整的安卓画板源代码 Android小画板

    【标题】"完整的安卓画板源代码 Android小画板" 涵盖了Android平台上开发一个简单画板应用的核心技术。在这个项目中,开发者利用Android SDK提供的工具和API,构建了一个用户可以自由绘画、擦除和选择颜色的界面。...

    js 使用canvas制作一个简易的画板.pdf

    使用 JavaScript,可以通过 `document.getElementById` 方法获取 Canvas 元素,并将其赋值给一个变量。例如:`const canvas = document.getElementById("canvas")` knowledge point 3: 获取 Canvas 2D 绘图上下文 ...

    简易画板Demo

    在iOS开发中,创建一个简易画板应用是一个常见的练习,它可以帮助开发者理解图形上下文、触摸事件处理以及用户交互设计等基础知识。这个"简易画板Demo"项目就是一个很好的实例,让我们来深入探讨其中的关键知识点。 ...

    matlab简易画板GUI程序

    本项目"matlab简易画板GUI程序"是一个基本的图形画板应用,用户可以在这个画板上进行简单的绘图操作,如绘制点、线、矩形和椭圆,同时支持选择颜色和线条粗细。遗憾的是,目前该程序尚未实现添加文本框的功能。 ...

    QT做的简易画板

    总的来说,"QT做的简易画板"是一个很好的学习和实践Qt编程的例子,它涉及到GUI设计、事件处理、绘图操作等多个关键领域,同时也展示了Qt框架在开发高效、功能丰富的应用程序方面的强大能力。通过这个项目,开发者...

    qt之简易画板

    本教程将基于Qt框架,介绍如何创建一个简单的画板应用,旨在帮助初学者理解Qt界面编程的基础以及绘图功能的实现。 首先,我们需要了解Qt的Widgets模块,它是构建用户界面的基础。在这个简易画板项目中,我们将使用...

Global site tag (gtag.js) - Google Analytics