`

flex中image控件如何添加边框

    博客分类:
  • flex
阅读更多

flex的image控件没有border属性。这困扰了我很久。毕竟,做特效后,图片如果光秃秃的,很难看。

 

google了半天,大家的说法中,我倾向于改写Image控件。找到一个东东,我修改并新增了代码。

共享如下:

 

页面代码:

<?xml version="1.0"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	xmlns:marsImage="mars.display.*" 
	backgroundColor="#000000"
	layout="absolute">
	
    <marsImage:BorderImage 
    	borderAlpha="{aBar.value}" 
    	borderWidth="{wBar.value}" 
    	borderColor="{colorTool.selectedColor}" 
    	source="@Embed('../img/panda.jpg')" 
    	width="258" height="229" x="180" y="62"/>
    	
    <mx:Label x="180" y="327" text="请选择边框颜色" color="#FDFDFD" fontSize="16"/>
    <mx:Label x="180" y="391" text="请选择边框宽度" color="#FDFDFD" fontSize="16"/>
    <mx:Label x="377" y="391" text="请选择边框透明度" color="#FDFDFD" fontSize="16"/>
    
    <mx:ColorPicker x="305" y="327" color="#FDFDFD" id="colorTool"/>
    <mx:VSlider x="525" y="255" minimum="0" maximum="1" id="aBar" />
    <mx:HSlider x="180" y="423" minimum="0" maximum="6" id="wBar"/>
    	
</mx:Application>

 

控件代码如下:

package mars.display
{
	import mx.controls.Image;
	//边框颜色
	[Style(name="borderColor", type="uint", format="Color", inherit="no")]
	//边框宽度
	[Style(name="borderWidth", type="Number", format="Length", inherit="no")]
	//边框透明度
	[Style(name="borderAlpha", type="Number", format="Length", inherit="no")]
	
	public class BorderImage extends Image
	{
		public function BorderImage()
		{
			super();
		}
	
		override protected function updateDisplayList(w:Number, h:Number):void{
			super.updateDisplayList(w,h);
			graphics.clear();
			
			graphics.lineStyle(getStyle('borderWidth'),getStyle('borderColor'),getStyle('borderAlpha'),false);
		
			var x:Number=-(getStyle('borderWidth')/2);
			var y:Number=-(getStyle('borderWidth')/2);
			var width:Number=contentWidth+getStyle('borderWidth');
			var height:Number=contentHeight+getStyle('borderWidth');
			graphics.drawRect(x,y,width,height);		
		}
	}
}

 

 ok,看疗效: 

 

分享到:
评论
11 楼 愚人陈 2014-03-15  
redsoft 写道
愚人陈 写道
redsoft 写道
边框是加上了。但却是圆角的,drawRect应该只是画个矩形而已,我找了一下也没找到圆角是在哪里出现的。请教楼主?


JointStyle 设置拐角类型, 和 gdi 类似.

graphics.lineStyle(getStyle('borderWidth'),getStyle('borderColor'),getStyle('borderAlpha'),false,"normal",null, flash.display.JointStyle.MITER);

哥,5年前的问题,我都要哭了,谢谢啊!


I noticed~

 
10 楼 redsoft 2014-02-28  
愚人陈 写道
redsoft 写道
边框是加上了。但却是圆角的,drawRect应该只是画个矩形而已,我找了一下也没找到圆角是在哪里出现的。请教楼主?


JointStyle 设置拐角类型, 和 gdi 类似.

graphics.lineStyle(getStyle('borderWidth'),getStyle('borderColor'),getStyle('borderAlpha'),false,"normal",null, flash.display.JointStyle.MITER);

哥,5年前的问题,我都要哭了,谢谢啊!
9 楼 愚人陈 2014-01-02  
redsoft 写道
边框是加上了。但却是圆角的,drawRect应该只是画个矩形而已,我找了一下也没找到圆角是在哪里出现的。请教楼主?


JointStyle 设置拐角类型, 和 gdi 类似.

graphics.lineStyle(getStyle('borderWidth'),getStyle('borderColor'),getStyle('borderAlpha'),false,"normal",null, flash.display.JointStyle.MITER);
8 楼 yfhy123 2011-01-05  
非常有用,楼主给力
7 楼 ganky 2010-09-28  
原来还真要重写控件……原控件居然没有边框设置,太不人道了
6 楼 redsoft 2009-06-10  
谢谢楼主,我还不知道javaeye上发帖这么费事。现在依照楼主的代码,边框是加上了。但却是圆角的,drawRect应该只是画个矩形而已,我找了一下也没找到圆角是在哪里出现的。请教楼主?
5 楼 forthelichking 2009-02-23  
有bug
当我把image放到tile控件的时候,宽度和高度都变得非常大。。。。
后来调试才发现,var width:Number=this.width + getStyle('borderWidth'); 这个getStyle('borderWidth')虽然是3,但是经过这么一次运算变成字符串相加了,如果this.width的宽度是48,那就变成483.。。。。

解决方法是把getStyle('borderWidth')转换成Number类型,再相加
4 楼 marshan 2009-02-13  
我记得contentWidth contentHeight 是父类的属性。你继承Image了么?
3 楼 zenggang2008 2009-02-11  
感谢仁兄提供好思路
不过我试了下出了点小问题,结果将
  var width:Number=contentWidth+getStyle('borderWidth');  
 var height:Number=contentHeight+getStyle('borderWidth');  


改为
  var width:Number=this.width + etStyle('borderWidth');  
 var height:Number=this.height + getStyle('borderWidth');  

就ok了
2 楼 marshan 2009-01-19  
you are welcome, it's my pleasure!
1 楼 tianhai110 2009-01-19  
不错,  我正在找这个,   楼主的代码我借用了

相关推荐

    Flex重写搜索框

    - 在组件类中添加图片资源,并设计布局,可能包括设置图片位置、大小以及与文本输入框的相对位置。 - 定义新的样式属性,如图片颜色、边框样式等,以便于在不同场景下调整外观。 - 可能还需要处理点击事件,例如...

    《Flex 3 组件实例与应用(2009版)》(PDF)

    Spacer组件用于在布局中添加空白空间,帮助调整其他控件的位置。 #### TabBar TabBar用于创建标签栏,便于在多个内容面板之间切换。 #### TileList TileList组件将项目以砖块或瓦片的形式排列,适用于图片集、产品...

    Flex UI组件使用全集

    - **ControlBar**: 控制栏组件,用于放置工具栏等控件。 - **DivideBox**: 可调整大小的容器,允许用户通过拖拽来调整子组件的大小。 - **Form、FormHeading、FormItem**: 表单及其相关的标题和表单项。 - **Grid、...

    小程序UI界面, 参考。 里面包含基本控件。.zip.zip

    - **Flex布局**:小程序中常用的一种弹性盒模型布局,可以实现复杂的流式布局。 - **Grid布局**:基于网格系统,适用于需要多列对齐的场景。 - **样式控制**:包括颜色、字体、间距、边框等,可以通过wxss文件...

    xiaogou404_HTML5_CSS3源码_

    4. 背景与边框:background-image支持多个背景图层、线性渐变和径向渐变,以及背景裁剪和定位。 5. 动画与过渡:transition和animation属性实现了平滑的过渡效果和复杂的动画序列。 6. 弹性布局(Flexbox):通过...

    javascript (2)_表单美化_javascript_

    例如,可以使用`background-image`属性添加自定义背景图片,或者使用`linear-gradient`创建渐变效果。 3. **布局控制**:使用`display`属性(如`flex`或`grid`)可以更好地控制表单元素的布局,实现响应式设计,...

    html5文件上传输入框样式代码.zip

    在这个示例中,我们添加了一个事件监听器,当用户选择文件后,会读取文件内容并转换为DataURL,然后将这个数据赋值给预览图像的`src`属性。 同时,CSS可以用来美化文件上传按钮和周围的布局。例如,你可以用伪元素...

    2022年大厂前端面试手册新版1

    gradient)、背景图像层叠(background-image、background-size、background-origin、background-clip)、Flexbox布局和Grid布局、动画(@keyframes)以及响应式设计单位(如vw、vh)等。 【清除浮动的方式】 清除...

    自学使用CSS和HTML进行网站发布

    - 属性:每个HTML元素都可以有属性,如`&lt;img src="image.jpg"&gt;`中的`src`属性指定图片源。 - 内联元素与块级元素:内联元素如`&lt;span&gt;`、`&lt;a&gt;`不会占据整行,而块级元素如`&lt;div&gt;`、`&lt;p&gt;`会自动换行。 2. CSS基础:...

    45道CSS基础面试题(附答案).pdf

    而低版本的IE浏览器采用的盒子模型中,元素的宽度或高度仅包括内容区的宽度或高度,边框和内边距都包含在设定的宽度或高度之内。这种差异导致了在不同浏览器中的布局表现不一致,为了解决这个问题,CSS3引入了`box-...

    css入门笔记

    属性:background-image:url(); 取值:url() 3.背景图像平铺 属性:background-repeat 取值: 1.repeat 默认值,横向和纵向同时平铺 2..repeat-x 纵向平铺 4.背景图像尺寸 属性:background-size: ...

    在Jiffycms HTML编辑器中设置图片库

    通过CSS,我们可以为图片库添加样式,比如背景颜色、边框、阴影,甚至实现滑动效果和响应式设计。例如,使用CSS3的`display: flex`或`grid`可以轻松创建多列图片布局。 4. **JavaScript交互**:为了增加动态功能,...

    形式

    10. **表单布局与间距**:`margin`属性用于控制元素间的间距,`flex-gap`和`grid-gap`在Flexbox和Grid布局中很有用。 11. **动画效果**:CSS动画可以增加交互性,如`transition`和`animation`属性可以实现平滑的...

    div+css布局实现个人网页设计(HTML期末作业)

    - 添加/删除事件监听器(`addEventListener()`, `removeEventListener()`等)。 - **事件处理**: - 鼠标事件(`onclick`, `onmouseover`等)。 - 键盘事件(`onkeydown`, `onkeyup`等)。 - **Ajax请求**: - 使用`...

    登录页面:登录页面

    利用 `background-image` 或 `content` 属性结合 `before` 和 `after` 伪元素,可以将图标整合到设计中。 8. **安全考虑**:密码输入框通常使用 `type="password"` 隐藏输入内容,保护用户隐私。还可以使用CSS来...

Global site tag (gtag.js) - Google Analytics