flex VSlider 滑竿 (track) 宽度的改变

    <mx:VSlider id="volumSlider" left="11" top="10" width="14" height="137" dataTipPrecision="0"
                maximum="100" minimum="0" showTrackHighlight="true" snapInterval="1"
                thumbSkin="@Embed(source='/assets/images/control.png')"
                trackHighlightSkin="com.webex.videosharing.skin.HighWidthSliderSkin"

                trackSkin="com.xxx.xxx.xxx.WidthSliderSkin" value="50"/>

要想改变其滑竿的宽度也就是track的宽度 必须自己 写两个类替换 默认的 trackSkin 和 trackHighSkin(高度的skin)

package com.xxx.xxx.xxx
{
    import flash.geom.Matrix;
    
    import mx.core.EdgeMetrics;
    import mx.skins.halo.SliderTrackSkin;

    public class HighWidthSliderSkin extends  SliderTrackSkin
    {
        public function HighWidthSliderSkin()
        {
        }
        override public function get measuredWidth():Number   
        {   
            return 7;
        }
        
        override public function get measuredHeight():Number   
        {   
            return 7;
        }
        
        override public function get height():Number   
        {   
            return 7;
        }
        
        override protected function drawRoundRect(x:Number, y:Number, width:Number, height:Number, cornerRadius:Object=null, color:Object=null, alpha:Object=null, gradientMatrix:Matrix=null, gradientType:String="linear", gradientRatios:Array=null, hole:Object=null):void
        {
            
            super.graphics.beginFill(0x09A2E0,1);
            super.drawRoundRect(x, y-1, width,height,null,0x09A2E0 , 1,  null, null, null, null);
            super.graphics.lineStyle(1,0x027FB8);
        }      
    
    }

}



package com.xxx.xxx.xxx
{
    import flash.geom.Matrix;
    
    import mx.core.EdgeMetrics;
    import mx.skins.halo.SliderTrackSkin;

    public class WidthSliderSkin extends  SliderTrackSkin
    {
        public function WidthSliderSkin()
        {
            
        }
        
        
        
        override public function get height():Number
        {
            
            return 7;
        }
        
        override public function get measuredHeight():Number   
        {   
            return 7;
        }
        
        override protected function drawRoundRect(x:Number, y:Number, width:Number, height:Number, cornerRadius:Object=null, color:Object=null, alpha:Object=null, gradientMatrix:Matrix=null, gradientType:String="linear", gradientRatios:Array=null, hole:Object=null):void
        {
            
            super.graphics.beginFill(0xE2E2E2)
            super.graphics.drawRect(x,y,width,height);
            super.graphics.lineStyle(1,0xE2E2E2);
            
            //super.drawRoundRect(x, y , width, height,null, 0xE2E2E2, alpha, null, null, null, null);
        }
       
    
    }
}

然后即可看到效果:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的ROI校正基准设置的C++例程,你可以根据自己的需求进行修改和优化: ```cpp #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { // 读取图像 Mat image = imread(argv[1]); if (image.empty()) { cout << "Could not open or find the image" << endl; return -1; } // 创建窗口 namedWindow("ROI Correction", WINDOW_NORMAL); // 定义ROI区域和校正基准线 Rect roiRect(0, 0, 100, 100); Point2f baseline[2] = { Point2f(0, 50), Point2f(100, 50) }; // 显示ROI区域和校正基准线 rectangle(image, roiRect, Scalar(0, 255, 0), 2); line(image, baseline[0], baseline[1], Scalar(0, 0, 255), 2); // 创建滑动条 int hSlider = 50; int vSlider = 50; int aSlider = 0; createTrackbar("Horizontal", "ROI Correction", &hSlider, image.cols); createTrackbar("Vertical", "ROI Correction", &vSlider, image.rows); createTrackbar("Angle", "ROI Correction", &aSlider, 360); while (1) { // 获取滑动条值 int hValue = getTrackbarPos("Horizontal", "ROI Correction"); int vValue = getTrackbarPos("Vertical", "ROI Correction"); int aValue = getTrackbarPos("Angle", "ROI Correction"); // 更新校正基准线 float theta = aValue * CV_PI / 180.0; float dx = cos(theta) * (hValue - hSlider); float dy = sin(theta) * (vValue - vSlider); baseline[0] = Point2f(hSlider - dx, vSlider - dy); baseline[1] = Point2f(hSlider + dx, vSlider + dy); // 更新ROI区域 Point2f center(hSlider, vSlider); Mat rotMat = getRotationMatrix2D(center, aValue, 1.0); Mat roiMat = Mat(baseline, 2, CV_32FC1); perspectiveTransform(roiMat, roiMat, rotMat); roiRect.x = roiMat.at<Point2f>(0, 0).x; roiRect.y = roiMat.at<Point2f>(0, 0).y; roiRect.width = roiMat.at<Point2f>(1, 0).x - roiRect.x; roiRect.height = roiMat.at<Point2f>(1, 0).y - roiRect.y; // 显示ROI区域和校正基准线 Mat roiImage = image(roiRect); rectangle(image, roiRect, Scalar(0, 255, 0), 2); line(image, baseline[0], baseline[1], Scalar(0, 0, 255), 2); // 显示图像 imshow("ROI Correction", image); // 等待按键 int key = waitKey(10); if (key == 'q') break; } return 0; } ``` 这个例程实现了一个简单的ROI校正基准设置功能,包括窗口创建、ROI区域和校正基准线的定义、滑动条的创建和获取、校正基准线和ROI区域的更新、图像的显示等功能。你可以在这个例程的基础上进行修改和优化,以适应你的实际需求和技术栈。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值