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临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、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

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.