AS3图像复制BitmapData.copyPixels()

2024-02-03 06:58

本文主要是介绍AS3图像复制BitmapData.copyPixels(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//舞台属性设置

stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
var selectBox:Sprite = new Sprite(); //生成选择框
var recordX:Number; //记录初始x坐标
var recordY:Number; //记录初始y坐标
var endX:Number; //记录结束x坐标
var endY:Number; //记录结束y坐标
var moveX:Number; //记录移动之后x坐标
var moveY:Number; //记录移动之后y坐标
var myImage:Bitmap; //显示图片的容器
var dragFlag:Boolean= false ; //用于判断选择框是否正在拖动
var clickPoint:Point; //记录开始的选择框对应的舞台坐标点
var endPoint:Point; //记录选择框绘制结束后选择框对应的舞台坐标点
initStage();
function initStage() {
     myImage= new Bitmap();
     addChild(myImage);
     bg.addEventListener(MouseEvent.MOUSE_DOWN,startDraw); //绘制选择框
     selectBox.addEventListener(MouseEvent.MOUSE_DOWN,dragSelectBox); //拖动选择框
     selectBox.addEventListener(MouseEvent.MOUSE_UP,stopDragSelectBox); //停止拖动选择框
}
function dragSelectBox(_evt:MouseEvent): void {
     _evt.currentTarget.startDrag();
     dragFlag= true ;
}
function stopDragSelectBox(_evt:MouseEvent) {
     if (dragFlag== true ) {
         createJPG(mc_image,selectBox,Math.min(selectBox.localToGlobal(clickPoint).x,selectBox.localToGlobal(endPoint).x),Math.min(selectBox.localToGlobal(clickPoint).y,selectBox.localToGlobal(endPoint).y));
         selectBox.stopDrag();
         dragFlag = false ;
     }
}
//开始绘制
function startDraw(_evt:MouseEvent): void {
     stage.addEventListener(Event.ENTER_FRAME,drawSelectBox);
     recordX = mouseX;
     recordY = mouseY;
     clickPoint = new Point(recordX,recordY);
}
//绘制选择框
function drawSelectBox(_evt:Event): void {
     selectBox.x=selectBox.y=0; //恢复坐标到原点
     selectBox.graphics.clear();
     selectBox.graphics.lineStyle(1,0x000000);
     selectBox.graphics.beginFill(0xffffff,0.7);
     selectBox.graphics.drawRect(recordX,recordY,mouseX-recordX,mouseY-recordY);
     selectBox.graphics.endFill();
     addChild(selectBox);
     stage.addEventListener(MouseEvent.MOUSE_UP,endDraw); // 鼠标在舞台上放开时的事件
}
//绘制结束
function endDraw(_evt:MouseEvent): void {
     stage.removeEventListener(Event.ENTER_FRAME,drawSelectBox);
     selectBox.stopDrag();
     dragFlag = false ;
     endX = mouseX;
     endY = mouseY;
     endPoint = new Point(endX,endY);
     createJPG(mc_image,selectBox,Math.min(recordX,endX),Math.min(recordY,endY));
     stage.removeEventListener(MouseEvent.MOUSE_UP,endDraw); //鼠标在舞台上放开时的事件
}
function createJPG(m:MovieClip,box:Sprite,originX:Number,originY:Number) {
     removeChild(myImage);
     var jpgSource:BitmapData= new BitmapData (m.width, m.height); //先把背景图转换成BitmapData
     jpgSource.draw(m);
     var rect:Rectangle = new Rectangle(originX,originY,box.width,box.height); //设置复制的区域和大小
     var pt:Point = new Point(0, 0); //复制到的对象的起始点
     var jpgOut:BitmapData= new BitmapData(box.width, box.height);
     jpgOut.copyPixels(jpgSource, rect, pt); //复制区域内容
     myImage = new Bitmap(jpgOut);
     addChild(myImage);

在Flash上点击左键拖动可以复制选中的图片内容到左上角,这个东西的具体用处,大概就是图片信息复制吧。

这篇关于AS3图像复制BitmapData.copyPixels()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/673311

相关文章

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

使用Python实现高效复制Excel行列与单元格

《使用Python实现高效复制Excel行列与单元格》在日常办公自动化或数据处理场景中,复制Excel中的单元格、行、列是高频需求,下面我们就来看看如何使用FreeSpire.XLSforPython... 目录一、环境准备:安装Free Spire.XLS for python二、核心实战:复制 Exce

Java多种文件复制方式以及效率对比分析

《Java多种文件复制方式以及效率对比分析》本文总结了Java复制文件的多种方式,包括传统的字节流、字符流、NIO系列、第三方包中的FileUtils等,并提供了不同方式的效率比较,同时,还介绍了遍历... 目录1 背景2 概述3 遍历3.1listFiles()3.2list()3.3org.codeha

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os