• QT quick-自制QML无人机地面站航向盘


      1 import QtQuick 2.0
      2 
      3 Rectangle
      4 
      5 {
      6 
      7     id:compassItem
      8 
      9      150
     10 
     11     height: 150
     12 
     13     color: "transparent"
     14 
     15     property int m_Angle: 0
     16     property int m_Yaw: 0
     17 
     18     Rectangle
     19 
     20     {
     21 
     22          parent.width
     23 
     24         height: parent.height
     25 
     26         color: "transparent"
     27 
     28         Canvas
     29 
     30         {
     31 
     32             anchors.fill: parent
     33 
     34             onPaint:
     35 
     36             {
     37 
     38                 var ctx = getContext("2d");
     39 
     40                 //绘制圆圈
     41 
     42                 ctx.lineWidth = 2;
     43 
     44                 ctx.strokeStyle = "#000000";
     45 
     46                 ctx.globalAlpha = 1.0;
     47 
     48                 ctx.beginPath();
     49 
     50                 ctx.arc(width/2,width/2,width/2-2,0,2*Math.PI);
     51 
     52                 ctx.stroke();
     53 
     54                 ctx.restore();
     55 
     56                 for(var i = 0;i<36;i++)
     57 
     58                 {
     59 
     60                     ctx.save();
     61 
     62                     ctx.translate(width/2,height/2);
     63 
     64                     ctx.rotate(i*10*Math.PI/180);
     65 
     66                     ctx.beginPath();
     67 
     68                     if(i%9 ==0)
     69 
     70                     {
     71 
     72                         ctx.moveTo(0,-width/2+12);
     73 
     74                         ctx.lineTo(0,-width/2+2);
     75 
     76                     }
     77 
     78                     else
     79 
     80                     {
     81 
     82                         ctx.moveTo(0,-width/2+10);
     83 
     84                         ctx.lineTo(0,-width/2+2);
     85 
     86                     }
     87 
     88                     ctx.stroke();
     89 
     90                     ctx.restore();
     91 
     92                 }
     93 
     94             }
     95 
     96         }
     97 
     98         Rectangle
     99 
    100         {
    101 
    102              20
    103 
    104             height: 20
    105 
    106             anchors.horizontalCenter: parent.horizontalCenter
    107 
    108             anchors.top: parent.top
    109 
    110             anchors.topMargin: 12
    111 
    112             rotation: -parent.rotation
    113 
    114             color: "#00000000"
    115 
    116             Text {
    117 
    118                 anchors.centerIn: parent
    119 
    120                 font.family: "微软雅黑"
    121 
    122                 font.pixelSize: 14
    123 
    124                 color: "#FF0000"
    125 
    126                 text: qsTr("N")
    127 
    128             }
    129 
    130         }
    131 
    132         Rectangle
    133 
    134         {
    135 
    136              20
    137 
    138             height: 20
    139 
    140             anchors.verticalCenter: parent.verticalCenter
    141 
    142             anchors.right: parent.right
    143 
    144             anchors.rightMargin: 12
    145 
    146             color: "#00000000"
    147 
    148             rotation: -parent.rotation
    149 
    150             Text {
    151 
    152                 anchors.centerIn: parent
    153 
    154                 font.family: "微软雅黑"
    155 
    156                 font.pixelSize: 14
    157 
    158                 color: "#FF0000"
    159 
    160                 text: qsTr("E")
    161 
    162             }
    163 
    164         }
    165 
    166         Rectangle
    167 
    168         {
    169 
    170              20
    171 
    172             height: 20
    173 
    174             anchors.verticalCenter: parent.verticalCenter
    175 
    176             anchors.left: parent.left
    177 
    178             anchors.leftMargin: 12
    179 
    180             color: "#00000000"
    181 
    182             rotation: -parent.rotation
    183 
    184             Text {
    185 
    186                 anchors.centerIn: parent
    187 
    188                 font.family: "微软雅黑"
    189 
    190                 font.pixelSize: 14
    191 
    192                 color: "#FF0000"
    193 
    194                 text: qsTr("W")
    195 
    196             }
    197 
    198         }
    199 
    200         Rectangle
    201 
    202         {
    203 
    204              20
    205 
    206             height: 20
    207 
    208             anchors.horizontalCenter: parent.horizontalCenter
    209 
    210             anchors.bottom: parent.bottom
    211 
    212             anchors.bottomMargin: 12
    213 
    214             color: "#00000000"
    215 
    216             rotation: -parent.rotation
    217 
    218             Text {
    219 
    220                 anchors.centerIn: parent
    221 
    222                 font.family: "微软雅黑"
    223 
    224                 font.pixelSize: 14
    225 
    226                 color: "#FF0000"
    227 
    228                 text: qsTr("S")
    229 
    230             }
    231 
    232         }
    233 
    234         Rectangle
    235 
    236         {
    237 
    238              64
    239 
    240             height: 64
    241 
    242             color: "transparent"
    243 
    244             rotation: compassItem.m_Angle
    245 
    246             anchors.centerIn: parent
    247 
    248             Image {
    249 
    250                 anchors.fill: parent
    251 
    252                 source: "Image/plane.svg"
    253 
    254             }
    255 
    256         }
    257         Rectangle{
    258              30
    259             height: 20
    260             color: "transparent"
    261             anchors.centerIn: parent
    262             Text {
    263                 id: compassValue
    264                 anchors.centerIn: parent
    265                 font.pixelSize: 12*dp
    266                 color: "#ffffff"
    267                 text: m_Yaw
    268             }
    269         }
    270 
    271     }
    272 
    273 }

    成果展示

  • 相关阅读:
    tcp/udp并发(大吞吐量)性能测试工具
    postman prerequest动态加密数据构造
    匹配ip的正则表达式
    通过adb命令保存并重命名截图
    python3 urlencode及urldecode
    Android安全测试工具Drozer coverity fortify
    windows下adb shell命令杀进程方式
    postman批量构造数据
    Android app发热功耗思路
    Jenkins+ant+Jenkins接口持续集成测试配置
  • 原文地址:https://www.cnblogs.com/GaJack/p/14265428.html
Copyright © 2020-2023  润新知