日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BorderContainer的圆角问题

發(fā)布時(shí)間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BorderContainer的圆角问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如上所示(加載比較慢,請(qǐng)耐心等待……),當(dāng)設(shè)置圓角的時(shí)候位于角上的內(nèi)容沒(méi)有被截?cái)?#xff0c;顯示到邊框之外了。

為了解決這個(gè)問(wèn)題,寫(xiě)了一個(gè)皮膚,給內(nèi)容部分加個(gè)帶圓角的遮罩,即點(diǎn)擊“切換”按鈕之后的效果。

皮膚文件代碼:

1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spark" 4 xmlns:mx="library://ns.adobe.com/flex/mx" alpha.disabled=".5" alpha="1"> 5 <!-- host component --> 6 <fx:Metadata> 7 [HostComponent("spark.components.BorderContainer")] 8 </fx:Metadata> 9 10 <fx:Script> 11 <![CDATA[ 12 import mx.graphics.BitmapFill; 13 import mx.graphics.SolidColor; 14 import mx.graphics.SolidColorStroke; 15 16 /** 17 * @private 18 */ 19 override protected function measure():void 20 { 21 measuredWidth = contentGroup.measuredWidth; 22 measuredHeight = contentGroup.measuredHeight; 23 measuredMinWidth = contentGroup.measuredMinWidth; 24 measuredMinHeight = contentGroup.measuredMinHeight; 25 26 var borderWeight:Number = getStyle("borderWeight"); 27 28 if (hostComponent && hostComponent.borderStroke) 29 borderWeight = hostComponent.borderStroke.weight; 30 31 if (borderWeight > 0) 32 { 33 var borderSize:int = borderWeight * 2; 34 measuredWidth += borderSize; 35 measuredHeight += borderSize; 36 measuredMinWidth += borderSize; 37 measuredMinHeight += borderSize; 38 } 39 } 40 41 /** 42 * @private 43 */ 44 override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void 45 { 46 graphics.clear(); 47 48 var borderWeight:int; 49 var borderStyle:String = getStyle("borderStyle"); 50 var borderVisible:Boolean = getStyle("borderVisible"); 51 var cornerRadius:Number = getStyle("cornerRadius"); 52 53 if (hostComponent && hostComponent.borderStroke) 54 borderWeight = hostComponent.borderStroke.weight; 55 else 56 borderWeight = getStyle("borderWeight"); 57 58 if (!borderVisible) 59 borderWeight = 0; 60 61 if (isNaN(borderWeight)) 62 borderWeight = 1; 63 64 contentGroup.setStyle("left", borderWeight); 65 contentGroup.setStyle("right", borderWeight); 66 contentGroup.setStyle("top", borderWeight); 67 contentGroup.setStyle("bottom", borderWeight); 68 69 // update the bgRect stroke/fill 70 if (hostComponent.borderStroke) 71 { 72 bgRect.stroke = hostComponent.borderStroke; 73 } 74 else if (!borderVisible) 75 { 76 bgRect.stroke = null; 77 } 78 else 79 { 80 var borderColor:Number = getStyle("borderColor"); 81 var borderAlpha:Number = getStyle("borderAlpha"); 82 83 if (!isNaN(borderColor)) 84 { 85 if (isNaN(borderAlpha)) 86 borderAlpha = 1; 87 bgRect.stroke = new SolidColorStroke(borderColor, borderWeight, borderAlpha); 88 } 89 } 90 91 if (hostComponent.backgroundFill) 92 { 93 bgRect.fill = hostComponent.backgroundFill; 94 } 95 else 96 { 97 var bgImage:Object = getStyle("backgroundImage"); 98 99 if (bgImage) 100 { 101 var bitmapFill:BitmapFill = bgRect.fill is BitmapFill ? BitmapFill(bgRect.fill) : new BitmapFill(); 102 103 bitmapFill.source = bgImage; 104 bitmapFill.fillMode = getStyle("backgroundImageFillMode"); 105 bitmapFill.alpha = getStyle("backgroundAlpha"); 106 107 bgRect.fill = bitmapFill; 108 } 109 else 110 { 111 var bkgdColor:Number = getStyle("backgroundColor"); 112 var bkgdAlpha:Number = getStyle("backgroundAlpha"); 113 114 if (isNaN(bkgdAlpha)) 115 bkgdAlpha = 1; 116 117 if (!isNaN(bkgdColor)) 118 bgRect.fill = new SolidColor(bkgdColor, bkgdAlpha); 119 else 120 bgRect.fill = new SolidColor(0, 0); 121 } 122 } 123 124 // Draw the shadow for the inset style 125 if (borderStyle == "inset" && hostComponent.borderStroke == null && borderVisible) 126 { 127 var negCR:Number = -cornerRadius; 128 var path:String = ""; 129 130 if (cornerRadius > 0 && borderWeight < 10) 131 { 132 // Draw each corner with two quadratics, using the following ratios: 133 var a:Number = cornerRadius * 0.292893218813453; 134 var s:Number = cornerRadius * 0.585786437626905; 135 var right:Number = unscaledWidth - borderWeight; 136 137 path += "M 0 " + cornerRadius; // M 0 CR 138 path += " Q 0 " + s + " " + a + " " + a; // Q 0 s a a 139 path += " Q " + s + " 0 " + cornerRadius + " 0"; // Q s 0 CR 0 140 path += " L " + (right - cornerRadius) + " 0"; // L (right-CR) 0 141 path += " Q " + (right - s) + " 0 " + (right - a) + " " + a; // Q (right-s) 0 (right-a) a 142 path += " Q " + right + " " + s + " " + right + " " + cornerRadius; // Q right s right CR 143 insetPath.height = cornerRadius; 144 } 145 else 146 { 147 path += "M 0 0"; 148 path += " L " + (unscaledWidth - borderWeight) + " 0"; 149 insetPath.height = 1; 150 } 151 152 insetPath.x = borderWeight; 153 insetPath.y = borderWeight; 154 insetPath.width = unscaledWidth - (borderWeight * 2); 155 insetPath.data = path; 156 insetPath.stroke = new SolidColorStroke(0x000000, 1, .12); 157 } 158 else 159 { 160 insetPath.data = ""; 161 insetPath.stroke = null; 162 } 163 164 bgRect.radiusX = bgRect.radiusY = cornerRadius; 165 166 // mask 167 var shape:Shape = new Shape(); 168 var g:Graphics = shape.graphics; 169 170 g.clear(); 171 g.beginFill(1); 172 g.drawRoundRect(0, 0, unscaledWidth, unscaledHeight, cornerRadius, cornerRadius); 173 g.endFill(); 174 175 contentGroup.mask = shape; 176 177 super.updateDisplayList(unscaledWidth, unscaledHeight); 178 179 if (getStyle("dropShadowVisible") == true) 180 { 181 rds.alpha = 0.4; 182 rds.angle = 90; 183 rds.color = 0x000000; 184 rds.distance = 5; 185 rds.tlRadius = rds.trRadius = rds.blRadius = rds.brRadius = cornerRadius + 1; 186 187 graphics.lineStyle(); 188 rds.width = unscaledWidth; 189 rds.height = unscaledHeight; 190 } 191 } 192 ]]> 193 </fx:Script> 194 195 <!-- states --> 196 <s:states> 197 <s:State name="normal" /> 198 <s:State name="disabled"/> 199 </s:states> 200 201 <s:Rect id="bgRect" left="0" right="0" top="0" bottom="0"> 202 </s:Rect> 203 204 <!-- SkinParts 205 name=contentGroup, type=spark.components.Group, required=false 206 --> 207 <s:Group id="contentGroup"/> 208 209 <s:Path id="insetPath"/> 210 211 <s:RectangularDropShadow id="rds"/> 212 </s:Skin>

具體就不解釋了,大部分都是拷貝自BorderContainer的默認(rèn)皮膚文件:spark.skins.spark.BorderContainerSkin,只有注釋了mask部分為加的遮罩.

轉(zhuǎn)載于:https://www.cnblogs.com/lipbb/archive/2012/05/14/2499014.html

總結(jié)

以上是生活随笔為你收集整理的BorderContainer的圆角问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 教练含着她的乳奶揉搓揉捏动态图 | 国产成人无码av在线播放dvd | 最近中文字幕在线中文高清版 | 丁香婷婷社区 | 欧美激情一级精品国产 | 国产精品国产三级国产专区53 | 黄色片在线观看免费 | 在线观看视频一区二区三区 | 人操人人 | 99久久黄色 | 国产av一区二区三区传媒 | 激情五月婷婷丁香 | 毛片在线免费观看网站 | 国产日韩欧美中文 | 亚洲在线天堂 | 亚洲av电影天堂男人的天堂 | 黄色福利站 | 亚洲乱仑 | 精品亚洲中文字幕 | 日本打屁股网站 | 成人欧美一区二区三区在线播放 | 精品乱码一区二区三四区视频 | 亚洲区小说区图片区qvod | 天天干狠狠 | 亚洲AV无码成人精品区东京热 | 在线播放国产一区 | 国产亚洲精品女人久久久久久 | 亚洲最大福利视频 | 亚洲激情视频网 | 嫩草天堂| 少妇喷水在线观看 | 日本一区二区不卡在线观看 | 一区二区传媒有限公司 | 新版红楼梦在线高清免费观看 | 优优色综合 | 国产精品自拍合集 | 边吃奶边添下面好爽 | 99re免费视频 | 男女野外做受全过程 | 亚洲激情在线视频 | 女同中文字幕 | 国产美女作爱视频 | 欧美激情五月 | 亚洲综合久久网 | 欧美 变态 另类 人妖 | 中文不卡av | 亚洲视频在线播放免费 | 国产成人精品二区三区亚瑟 | 欧美经典一区 | 成人快色| 极品av在线| 武林美妇肉伦娇喘呻吟 | 天天色天天射天天操 | 色播放 | 少妇高潮一区二区三区69 | 一级肉体全黄裸片中国 | 黄色在线观看网站 | 色综合天天干 | 日本性欧美 | 女儿朋友| av中亚| 日本一区二区三区中文字幕 | 日本动漫艳母 | 国产精品视频久久久久 | 男女啪啪资源 | 中文字幕一区二区三区在线观看 | 高h调教冰块play男男双性文 | 黄色小视频在线观看 | 波多野结衣一区二区三区四区 | 久草热线 | 日韩欧美亚洲精品 | 视频区小说区图片区 | 欧美成人xxx | 欧美极品喷水 | 成人区人妻精品一区二区不卡视频 | 色五丁香 | 在线观看国产三级 | 国产精品无码电影 | 日本三级欧美三级 | 久久一卡二卡 | 91精品久久久久久久久中文字幕 | 视色视频 | 色国产精品 | 中国少妇初尝黑人巨大 | 国产经典久久 | 国产精品91久久 | 少妇免费视频 | 国产女人高潮的av毛片 | 天天爽天天爽天天爽 | 男人av影院 | 亚洲成人av电影网站 | 国语对白做受欧美 | 日日摸夜夜添夜夜添高潮喷水 | 日本三级一区二区 | 色婷婷久久五月综合成人 | 污的视频在线观看 | 黄色网页大全 | 黄色激情小说视频 | 成人一二三四区 |