Flex中如何用贴图的方式高效地绘制虚线

本文介绍了如何在Flex中通过贴图和Matrix矩阵实现高效的虚线绘制,避免了传统方法中大量计算和小线段绘制导致的性能问题。提供了一个虚线绘制类,只需输入折线点、虚线样式、线宽和颜色即可。虽然线宽较大时效果不佳,但算法复杂度与虚线样式无关,适用于线宽较小的情况。
摘要由CSDN通过智能技术生成

Flex自身并不支持虚线,网上给出的解决方案大多是通过计算实线端点,然后分段连接的方法。这种方法最大的缺点是效率低下,当虚线样式过于复杂并且折线很长时,因为需要进行大量的计算和小线段的绘制,会造成明显的延迟。

因为项目需要,作者通过研究贴图方法和Matrix矩阵,给出一种在线宽较小时比较完美的解决方案,分享给大家,希望对您有所帮助。

基本思路是:首先通过虚线样式生成虚线配置单元(bitmapdata);然后将配置单元依次配置到折线上,配置过程中使用Matrix进行仿射变换。

下面是虚线绘制类,使用时只需给定折线点数组pts,虚线样式lengths和线宽,线色,透明度。

package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.CapsStyle;
	import flash.display.Graphics;
	import flash.display.JointStyle;
	import flash.display.Shape;
	import flash.geom.Matrix;
	import flash.geom.Point;
	
	public class GraphicsUtil
	{		
		/**绘制虚线
		 * g		:绘制对象
		 * pts		:折线点数组	
		 * lengths	:实线,虚线的长度数组。格式为实线长度,虚线长度,实线长度,虚线长度,...
		 * width	:线宽
		 * color	:线色
		 * alpha	:透明度 
		 * */
		public static function drawDashedPolyline(g:Graphics,pts:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值