精华内容
下载资源
问答
  • 作者generic-leo,源码SimpleArcLoader,半圆和满圆加载效果的视图,大家可以参考一下吧。
  • VC6.0工程,C++,OpenGL+NURBS, 2阶3个控制点和4阶5个控制点绘制四分之圆, 3阶4个控制点绘制半圆, 2阶9个控制点绘制圆,2阶7个控制点绘制圆,3阶7个控制点绘制圆。
  • 主要为大家详细介绍了android canvas使用line画半园,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了WPF实现半圆形导航菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 半圆形进度的圆盘,可控制进度,渐变色以及旋转的弧度
  • 显示在半圆列表项,个不错的鱼眼效果.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • flutter绘制自定义组件,flutter绘制自定义组件,flutter绘制自定义组件flutter绘制自定义组件
  • 使用QT绘制个两侧为半圆中间为矩形的规则形状 首先 把这个形状叫做A方便描述(因为我也不知道这是啥形状) 目标是由三个这种矩形组成的滑动条 如下图 绘制这个形状首先要知道对应A所在的矩形 然后根据这个矩形就...

    使用QT绘制一个两侧为半圆中间为矩形的规则形状

    首先 把这个形状叫做A方便描述(因为我也不知道这是啥形状)

    目标是由三个这种矩形组成的滑动条 如下图

    image-20210528093726434

    绘制这个形状首先要知道对应A所在的矩形

    image-20210528102712120

    然后根据这个矩形就可以通过这个函数makeSemicircleEdgeRectanglePath获取A的painterPath了

    makeSemicircleEdgeRectanglePath(QRect rect)
    {
        int x = rect.x();
        int y = rect.y();
        int w = rect.width();
        int h = rect.height();
        int r = h/2;
        QPoint leftCenter(x+r,y+r);        //左侧半圆圆心
        QPoint rightCenter(x+w-r,y+r);     //右侧半圆圆心
        QPoint leftTop(x+r,y);             //左上角顶点
        QPoint rightBottom(x+w-r,y+h);	   //右下角顶点
        QRect leftSemicircleRect(x,y,h,h); //左半圆所在矩形
        QRect rightSemicircleRect(x+w-h,y,h,h);//右半圆所在矩形
        
        QPainterPath semicircleEdgeRectanglePath;
        semicircleEdgeRectanglePath.moveTo(leftCenter);
        semicircleEdgeRectanglePath.arcTo(leftSemicircleRect,90,180);
        semicircleEdgeRectanglePath.lineTo(rightBottom);
        semicircleEdgeRectanglePath.moveTo(rightCenter);
        semicircleEdgeRectanglePath.arcTo(rightSemicircleRect,270,180);
        semicircleEdgeRectanglePath.lineTo(leftTop);
        semicircleEdgeRectanglePath.closeSubpath();
        
        return semicircleEdgeRectanglePath;
    }
    
    //使用函数
        QRect rect(x,y,w,h);
        //painter.setPen(Qt::SolidLine);
        painter.setPen(Qt::NoPen);
        QLinearGradient linearGradient(x,y,x+w,y+h);
        linearGradient.setColorAt(0.0,QColor(COLOR_LINE_BEGIN));
        linearGradient.setColorAt(1.0,QColor(COLOR_LINE_END));
        painter.setBrush(linearGradient);
        QPainterPath linePath = makeSemicircleEdgeRectanglePath(rect);
        painter.drawPath(linePath);
    
    

    运行程序得到的效果却并不理想

    image-20210528094511625

    查看官方文档知道当我从右下角moveTo到rightCenter时就已经形成了一段封闭路径

    semicircleEdgeRectanglePath.moveTo(rightCenter);
    

    The moveTo() function implicitly starts a new subpath, and closes the previous one.

    解决方法1(无效):

    修改填充Typeimage-20210528100831104

    semicircleEdgeRectanglePath.setFillRule(Qt::WindingFill);
    

    测试并没有效果

    解决方案2(效果不佳):

    将moveTo(rightCenter)改为lineTo(rightCenter);

    效果如下:

    image-20210528104159304

    可见lineTo的线还是被画出来了 此时在外部设置NoPen可以解决问题

    painter.setPen(Qt::NoPen);
    

    image-20210528104437924

    这种解决办法并不理想,因为作为一个makePath的工具函数你还必须在外部设置画笔,那必然是失败的

    解决方案3:

    不断的尝试发现画圆弧不需要先move到圆心,之前不知道是在那看的说明说要移到圆心坑了我,当时我就在想都已经知道矩形的位置了和起始的角度就可以绘制圆了,移动到圆心有什么意义呢?果然是不需要的,那问题就好解决了,且圆心的位置也不用设置了,省了一桩事

    这样的话只要删掉semicircleEdgeRectanglePath.moveTo(rightCenter);就可以了

    运行显示正常

    image-20210528104437924

    在设置画笔试试:

    image-20210528141754828

    这条线出现的原因是因为起始点在左侧圆心,最后closeSubpath()时链接到了这里,吧刚开始的moveTo(leftCenter)改成moveTo(leftTop)就好了;

    image-20210528142108190

    (扩展)半圆部分在上下

    首先想到的是将矩形逆时针旋转90°,然后画A,画好后再顺时针旋转90°回去,结果跑去一看官方文档发现只有平移函数没有旋转函数,要旋转的话还是要对painter处理,那就只能使用又土又简单的方法了

    makeSemicircleEdgeRectanglePath(QRect rect, bool isHorizontal)
    {
        int x = rect.x();
        int y = rect.y();
        int w = rect.width();
        int h = rect.height();
        int r = h/2;
        QPainterPath semicircleEdgeRectanglePath;
        semicircleEdgeRectanglePath.setFillRule(Qt::WindingFill);
    
        QPoint leftTop(x+r,y);             //左上角顶点
        QPoint rightBottom(x+w-r,y+h);     //右下角顶点
        QRect leftSemicircleRect(x,y,h,h); //左半圆所在正方形
        QRect rightSemicircleRect(x+w-h,y,h,h);
        int relativeAngle = 0;
        if (!isHorizontal)
        {
            r = w/2;
            relativeAngle = 90;
            rightBottom = QPoint(x,y+h-r); //vertical 情况下变成leftBottom
            leftTop = QPoint(x+w,y+r); //vertical 情况下变成rightTop
            leftSemicircleRect= QRect(x,y,w,w);//vertical 情况下变成上半圆所在正方形
            rightSemicircleRect = QRect(x,y+h-w,w,w);//vertical 情况下变成下半圆所在正方形
        }
    
        semicircleEdgeRectanglePath.moveTo(leftTop);
        semicircleEdgeRectanglePath.arcTo(leftSemicircleRect, 90 - relativeAngle, 180);
        semicircleEdgeRectanglePath.lineTo(rightBottom);
        semicircleEdgeRectanglePath.arcTo(rightSemicircleRect, 270 - relativeAngle, 180);
        semicircleEdgeRectanglePath.lineTo(leftTop);
        semicircleEdgeRectanglePath.closeSubpath();
    
        return semicircleEdgeRectanglePath;
        
    }
    
    
    
    展开全文
  • 行业资料-交通装置-半圆键槽铣刀.zip
  • 行业资料-交通装置-种凸半圆铣刀.zip
  • 行业分类-作业装置-半圆铁片划线装置.zip
  • 行业分类-电子电器-半圆槽式电缆固定装置.zip
  • 前不久看到鸿洋大大的圆形菜单,就想开始模仿,因为实在是太酷了,然后自己根据别人(zw哥)...1.到时候展示只需要半圆的转盘。 2.在规定的角度不能让他们自动旋转(涉及延伸的一些数学计算,一会重点讲解)。 3.要绑定
  • 本文实例为大家分享了微信小程序绘制半圆进度条的具体代码,供大家参考,具体内容如下 wxml: <canvas canvas-id=canvasProgress xss=removed></canvas> <canvas canvas-id=canvasProgressReal style=...
  • 使用svg实现半圆圆角进度条

    千次阅读 2019-07-17 15:44:46
    在使用echarts环形图实现半圆进度条的过程中,遇到个究极蛋疼的问题,这个进度条需要是个圆角的,但是目前echarts对圆角的支持并不完善(只支持平角和尖角,尖角的实现请看:使用echarts实现多重环形图) ...

    前言

    在使用echarts环形图实现半圆进度条的过程中,遇到一个究极蛋疼的问题,这个进度条需要是一个圆角的,但是目前echarts对圆角的支持并不完善(只支持平角和尖角,尖角的实现请看:使用echarts实现多重环形图
    所幸的是,UI对于进度条的的要求并不严格,既然这样的话,我们可以使用svg自己画出一个理想中的圆角进度条
    先来看看效果:
    processBar.png
    效果还是能看的,下面讲讲如何去实现它

    一个圆

    无论如何,我们首先需要一个圆,使用svg画一个圆出来

    <svg>
       <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="grey" />
    </svg> 
    

    画出来的效果是这样的:
    a circle
    其中,cxcy 属性定义圆点的 xy 坐标。如果省略 cxcy,圆的中心会被设置为 (0, 0),放到图中就是圆心会跑到图片的左上角。
    r 属性定义圆的半径。
    stroke指的是这个圆形的描边(就是圆周围黑色的线),stroke-width指它的描边宽度
    fill指的是圆中填充的颜色

    我们后面调整的最多的就是stroke相关的属性

    调整

    有了一个圆之后,我们需要将它一步步调整为我们理想中的样子。
    首先,作为半圆进度条,我们不需要这个圆中有填充的部分,所以我们设置fillnone
    为了让线条更加显眼一些,暂时先把stroke描边的颜色设置为grey, 将stroke-width设置为12, 设置完成之后如下所示
    circle
    接下来,我们将会调整circle的stroke-dasharray 属性以及stroke-dashoffset属性

    stroke-dasharray属性可以将图形的描边进行点状化,这个点的大小并不是固定的,可以变长或者变短。这一点请读者自行尝试设置一下,就可以有非常直观的感受。
    下面是我调整过stroke-dasharray 的代码以及效果:

    <svg>
    	<circle
    	  cx="150"
    	  cy="73"
    	  r="60"
    	  stroke="grey"
    	  stroke-width="12"
    	  fill="none"
    	  stroke-dasharray="213"
    	/>
    </svg> 
    

    half circle
    一个半圆的进度条已经有了,虽然它的姿势有点问题~:)

    接下来,我们调整它的stroke-dashoffset属性

    stroke-dashoffset可以使上一步中使用 stroke-dasharray 生成的沿着path移动, 我个人的理解就是点的偏移量,通过不断的调整,可以使图形的描边不断产生偏移,最终达到需要的效果;

    调整后的代码和效果如下:

    <svg>
    	<circle
    	  cx="150"
    	  cy="73"
    	  r="60"
    	  stroke="grey"
    	  stroke-width="12"
    	  fill="none"
    	  stroke-dasharray="213"
    	  stroke-dashoffset="238"
    	/>
    </svg> 
    

    在这里插入图片描述
    好了,一个基础的半圆进度条已经绘制完成了。接下来,我们要将它设置为圆角,值得一提的,stroke属性对于设置圆角是非常友好的,我们只需要设置stroke-linecap属性就可以了,我们来看一下关于stroke-linecap属性的解释

    The stroke-linecap property defines different types of endings to an open path

    stroke-linecap可以设置描边末端的样式,目前我所了解支持的样式一共有3种,我们只需要关心圆角的那一种就Ok了。
    在上述代码circle标签中添加stroke-linecap="round",再来看一下效果:
    在这里插入图片描述
    非常完美的圆角。

    添加进度效果

    进度条当然得有进度,我们需要为上述图形在添加一个显示进度的图形,在之前我们已经画出了一个像模像样的半圆,我们现在可以直接复制半圆的代码。仅将stroke的颜色做一个替换。效果如下:
    在这里插入图片描述
    这里黄色的半圆环覆盖了原来的圆环,我们接下来就会调整这个黄色半圆环的stroke array属性

    通过stroke array属性, 我们可以方便的调整描边“点”之间的间距,从视觉上营造出一种进度条的感觉,给stroke array多添加一个参数,这样我们可以分开控制实线和虚线。参数可以是一个数组,这意味着我们可以精确的控制每一根实线和虚线长短,关于stroke array

    The first value and every second value in the list after it specifies the length of a dash, and every other value specifies the length of a gap between the dashes

    当只有一个数值时,会复制该值以对虚线进行控制

    If the list has an odd number of values, then it is repeated to yield an even number of values.

    想要深入理解stroke array以及stroke-dashoffset属性的话,可以参考这篇文章 : SVG理解stroke-dasharray和stroke-dashoffset属性。 或者多尝试一下自己调整参数,看看出现什么样的效果,加深理解。

    以下调试的过程的略去(a few moment later…)
    最终调试好的代码和效果如下:

    <svg>
         <circle
           cx="150"
           cy="73"
           r="60"
           stroke="grey"
           stroke-width="12"
           fill="none"
           stroke-dasharray="190"
           stroke-dashoffset="-190"
           stroke-linecap="round"
         />
    
         <circle
           cx="150"
           cy="73"
           r="60"
           stroke="gold"
           stroke-width="12"
           fill="none"
           stroke-dasharray="95 190" # 注意,这里数字的比例即为进度条比例
           stroke-dashoffset="-190"
           stroke-linecap="round"
         />
    </svg>
    

    在这里插入图片描述
    最后,我们只要数据驱动,当数据改变时,重新渲染该图形,就能实现进度条的自由控制啦~

    在此基础上,我们可以给描边加上渐变效果数据变化时添加动画效果等等其他方式来对进度条进行美化,后续这些就不详细讲了。

    参考

    笔记:SVG 环形动画(进度条)原理
    SVG:理解stroke-dasharray和stroke-dashoffset属性

    最后照例放上一张美图~_(:з」∠)_
    一张美图

    展开全文
  • 1.实现效果 2.实现原理 半圆+伪元素

    1.实现效果

    在这里插入图片描述

    2.实现原理

    半圆+伪元素
    虚线和半圆是连在一起的,且高度不定,将虚线设为border-bottom,dashed,以这个view为基准,设置伪元素的定位。

    3.实现代码

    <view class="card">
      <view class="top">
        <view class="title">
          <span></span>
          <text>卡券定义</text>
          <span></span>
        </view>
      </view>
      <view class="bottom"></view>
    </view>
    
    page {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 100%;
      background-color: #57D4F4;
    }
    
    .card {
      width: 683rpx;
      height: 856rpx;
      background: #FFFFFF;
      border-radius: 40rpx;
      box-sizing: border-box;
      padding: 0 24rpx;
    }
    
    .top {
      box-sizing: border-box;
      height: 475rpx;
      padding-top: 40rpx;
      border-bottom: 1px dashed #66E0FE;
      position: relative;
    }
    
    .top::before {
      content: '';
      position: absolute;
      width: 22rpx;
      height: 44rpx;
      background: #57D4F4;
      left: -24rpx;
      bottom: -24rpx;
      border-radius: 0 22rpx 22rpx 0;
      /* 左上、右上、右下、左下 */
    }
    
    .top::after {
      content: '';
      position: absolute;
      width: 22rpx;
      height: 44rpx;
      background: #57D4F4;
      right: -24rpx;
      bottom: -24rpx;
      border-radius: 22rpx 0 0 22rpx;
      /* 左上、右上、右下、左下 */
    }
    
    .title {
      display: flex;
      align-items: center;
      justify-content: center;
    
    }
    
    .title text {
      font-size: 30rpx;
      font-weight: 600;
      color: #147ABE;
      padding: 0 13rpx 0 20rpx;
    }
    
    .title span {
      width: 21rpx;
      height: 21rpx;
      background: #7FE0F7;
      border-radius: 50%;
      position: relative;
    }
    
    .title span::after {
      content: '';
      position: absolute;
      width: 14rpx;
      height: 14rpx;
      background: rgba(255, 190, 85, 0.58);
      border-radius: 50%;
      bottom: 0;
      right: -7rpx;
    }
    

    4.更多小程序源码可关注苏苏的码云

    展开全文
  • 个圆表示2个进度 ,也就是半圆表示进度。二个合成个圆
  • 自写的个Winform控件 半圆仪表盘 可以应用在一些报表当中 应该还有BUG
  • 本篇文章主要介绍了css3实现画半圆弧线的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 行业分类-物理装置-种具有半圆柱状顶部凸起结构的声屏障.zip
  • 纯css实现半圆

    2019-03-07 15:18:00
    <div class="semiCircle"></div> .semiCircle{ width:25px; height:50px; background:red; border-top-left-radius:25px; border-bottom-left-radius:25px; } ......
    <div class="semiCircle"></div>
    .semiCircle{
        width:25px;
        height:50px;
        background:red;
        border-top-left-radius:25px;
        border-bottom-left-radius:25px;    
    }

     

    转载于:https://www.cnblogs.com/ly-qingqiu/p/10489849.html

    展开全文
  • ARCPATCH 创建半圆楔作为 MATLAB 补片。 用于突出显示两条线之间的角度、创建低级饼图等。 用途: arcpatch(x,y,r,phi) arcpatch(x,y,r,[phi0 phi1]) h = 大补丁(...) 创建个圆弧,其中心为 (x,y),半径为 r...
  • //镶嵌式运算可读性变差,可定义个变量中间算出进行 return 0 ; } 4 计算长方体体积(3分) 题目内容:编程并输出长1.2、宽4.3、高6.4的长方体的体积。要求长方体的长、宽、高必须利用const常量表示。程序...
  • Android高级应用源码-显示在半圆列表项,个不错的鱼眼效果.zip
  • 半圆菜单按钮

    2014-03-30 10:57:13
    前段时间位老友跟我提了个附在边上的菜单按钮,这段时间比较忙,没有完美实现,只做了个原型Demo出来,先发出来记录一下,到有时间在优化这个View,如果有高手能修改优化分享出来的话,小弟在此谢过了。...
  • 显示在半圆列表项个不错的鱼眼效果.zip
  • //排列 } private void Start() { } /// /// 半圆排列 /// /// public void GerCurP(Transform trans) { if (theChildCount )//如果总个数小于等于行的个数,那只需要排列行 { print("个数不超过十个");...
  • 行业分类-作业装置- 种带半圆成型轮组的不锈钢圆管成型装置.zip
  • 双数据区,鼠标右键点击圆——“产生测点”,属性页里可以改角度,也可以鼠标在图形区选择和拉升,改变测点位置。
  • 半圆的css 控制 border-radius 与宽 高,来设置圆的方向。 div { width:10px; height: 20px; background-color: pink; border-radius: 0 10px 10px 0; /*四个值分别为 左上、右上、右下、左下 */ } 1/4圆 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,386
精华内容 4,154
关键字:

半圆一是什么