Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3 photoshop画笔_Actionscript 3_Drawing_Photoshop_Brush - Fatal编程技术网

Actionscript 3 AS3 photoshop画笔

Actionscript 3 AS3 photoshop画笔,actionscript-3,drawing,photoshop,brush,Actionscript 3,Drawing,Photoshop,Brush,我正在寻找一种在ActionScript3中构建类似photoshop的绘图工具的方法。特别是我想在photoshop中创建类似画笔的东西。因此,您可以使用不同的PNG作为笔刷 我在photoshop中将画笔保存为透明png,将其导入到我的AS3项目中,并使用鼠标移动事件,在每次将鼠标移动到bitmapdata对象时绘制png。 但这看起来不像photoshop。下面是一个示例,首先是photoshop图形,然后是as3图形: 在photoshop中,它看起来非常平滑,但在as3中,你会看到

我正在寻找一种在ActionScript3中构建类似photoshop的绘图工具的方法。特别是我想在photoshop中创建类似画笔的东西。因此,您可以使用不同的PNG作为笔刷

我在photoshop中将画笔保存为透明png,将其导入到我的AS3项目中,并使用鼠标移动事件,在每次将鼠标移动到bitmapdata对象时绘制png。 但这看起来不像photoshop。下面是一个示例,首先是photoshop图形,然后是as3图形:

在photoshop中,它看起来非常平滑,但在as3中,你会看到丑陋的角落和颜色变化。 有人知道解决办法吗

thx,tux这是因为Photshop“行走”鼠标坐标之间的距离,并绘制该距离。所以,即使你在两点之间快速移动鼠标,你也会得到一条连贯的线

每次鼠标更新仅绘制一次,因此,如果鼠标移动非常快,则将获得点而不是线

您可以通过跟踪上一次鼠标更新的位置来解决这个问题,如果在额外的步骤中,鼠标更新与绘制之间的距离太远。

这是因为Photshop“行走”鼠标坐标之间的距离,并且也绘制鼠标坐标。所以,即使你在两点之间快速移动鼠标,你也会得到一条连贯的线

每次鼠标更新仅绘制一次,因此,如果鼠标移动非常快,则将获得点而不是线


您可以通过跟踪上次鼠标更新的位置来解决此问题,如果在额外的步骤中距离绘制太远。

更具体地说,您应该在每次启动鼠标向下时制作一个临时位图。在此基础上,笔刷将以黑白绘制-这将产生更平滑的结果,例如,当您使绘制的笔刷在alpha中不完整时。此外,正如葡萄柚所说,在这里你必须使用“行走”技术


最后,一旦触发mouseUp事件,您必须重新激活位图(用于笔刷颜色),如果需要,可以添加一些过滤器并将其绘制在主位图上。

更具体地说:每次触发mouseDown时,您都应该制作一个临时位图。在此基础上,笔刷将以黑白绘制-这将产生更平滑的结果,例如,当您使绘制的笔刷在alpha中不完整时。此外,正如葡萄柚所说,在这里你必须使用“行走”技术


最后,一旦触发mouseUp事件,您必须重新对位图进行着色(对于画笔颜色),如果需要,还可能添加一些过滤器,并将其绘制在主位图上。

答案是Flash使用预先乘以的alpha透明度绘制位图数据。闪存基本上通过将几乎透明的像素舍入到另一个值来节省内存。这是人眼无法察觉的,除非你把图像一次又一次地叠在一起。这会导致颜色的舍入错误,看起来几乎像画笔烧焦的边缘

正如其他人所指出的那样,您肯定需要在鼠标位置之间“移动”笔刷,但这并不能解决当您将图像堆叠在另一个图像上时发生的颜色变化


相反,将笔刷笔划绘制到透明位图中,并使用colorTransform方法将新层着色为选定的颜色。鼠标向上移动时,将透明层绘制到画布中。(不使用时,别忘了删除额外的图层!)

答案是Flash使用预先乘以的alpha透明度绘制位图数据。闪存基本上通过将几乎透明的像素舍入到另一个值来节省内存。这是人眼无法察觉的,除非你把图像一次又一次地叠在一起。这会导致颜色的舍入错误,看起来几乎像画笔烧焦的边缘

正如其他人所指出的那样,您肯定需要在鼠标位置之间“移动”笔刷,但这并不能解决当您将图像堆叠在另一个图像上时发生的颜色变化


相反,将笔刷笔划绘制到透明位图中,并使用colorTransform方法将新层着色为选定的颜色。鼠标向上移动时,将透明层绘制到画布中。(当你不使用的时候,别忘了删除额外的一层!)

我会在我的答案中添加一个代码示例,但你似乎不太愿意接受答案,所以我会留到以后。哦,天哪,我太笨了,我甚至无法实现你已经实现的目标。你能分享密码吗?伙计,那是4年前的事了;)我将搜索项目,并共享我的代码;)很抱歉,我再也找不到代码了:(我想在我的答案中添加一个代码示例,但你似乎不太愿意接受答案,所以我会留到以后。哦,老兄,我太笨了,我甚至无法实现你所实现的。你能分享代码吗?老兄,那是4年前的事了;)我会搜索项目,并分享我的代码;)很抱歉,无法再找到代码:(thx对于你的答案,你用黑白画是什么意思?我的意思是-有一个PNG的黑色图像-所有像素的颜色都设置为黑色,它们只在alpha通道中不同。然后你可以很容易地将这些图像合并到临时位图,并在鼠标移动和重新聚集后,合并到主位图。thx对于你的答案,你是什么意思y黑白画?我的意思是-有一个PNG的黑色图像-所有像素的颜色都设置为黑色,它们只在alpha通道中不同。然后你可以很容易地将这些图像合并到临时位图,在鼠标移动和重新聚集后,合并到主位图。好的,我会检查并在这里发布结果,谢谢你的回答。好的,我会的检查此项并将结果张贴在此处,谢谢您的回答