Qt 在Label上面繪制羅盤

      網友投稿 852 2025-04-01

      自己寫的一個小小的電子羅盤的一個小程序,不過是項目的一部分,只可以貼繪制部分代碼

      效果如下圖

      首先開始自己寫的時候,雖然知道Qt 的坐標系是從左上角開始的,所以,使用了算法,在繪制后,在移動回來,但是只有45度的時候可以實現,其它角度都是有問題的。

      和前輩請教,先移動坐標在繪制,在使用過程中,忘記調用

      painter1.save();

      函數,到時失敗,仔細檢查是才發現少些了一行。

      上核心代碼

      void MainWidget::draw_Direction()

      {

      QPainter painter1(ui->label_Direction);

      painter1.setRenderHint(QPainter::Antialiasing,true);

      painter1.setPen(QPen(QColor(Qt::blue),1.5,Qt::SolidLine,Qt::FlatCap));

      /*

      * move point

      QTransform t_y;

      t_y.rotate(-90,Qt::YAxis);

      painter1.setTransform(t_y);

      int temp =30;

      QTransform t_z;

      t_z.rotate(temp,Qt::ZAxis);

      painter1.setTransform(t_z);

      painter1.translate(0+135*qCos(30*PI/180.0),0-135*qSin(30*PI/180.0));

      painter1.translate(0-39+96,0-39-96);

      painter1.translate((0-(((135/(qCos(45*PI/180.0)))*qSin((temp+45)*PI/180.0)-135)*(qSin(temp*PI/180.0)))+(135-((135/(qCos(45*PI/180.0)))*qCos((temp+45)*PI/180.0)))),((0-(((135/(qCos(45*PI/180.0)))*qSin((temp+45)*PI/180.0)-135)*(qCos(temp*PI/180.0))))-(135-((135/(qCos(45*PI/180.0)))*qSin((temp+45)*PI/180.0)))));

      painter1.translate(0-((TEMP_R*qSin((temp+45)*PI/180.0))-135)*qCos((temp)*PI/180.0)+(TEMP_R*qCos((temp)*PI/180.0))* qCos((temp)*PI/180.0),0-((TEMP_R*qSin((temp+45)*PI/180.0))-135)*qSin((temp)*PI/180.0)-(TEMP_R*qCos((temp)*PI/180.0))* qSin((temp)*PI/180.0));

      qDebug()<<(TEMP_R*qCos((temp)*PI/180.0))* qSin((temp)*PI/180.0);

      */

      painter1.translate(135,135);

      painter1.save();

      painter1.rotate(num_Angle);

      for(int i = 0;i<360;)

      Qt 在Label上面繪制羅盤

      {

      if((i%90) == 0)

      {

      painter1.drawLine(0+(95*qSin(i*PI/180.0)),0-(95*qCos(i*PI/180.0)),0+(100*qSin(i*PI/180.0)),0-(100*qCos(i*PI/180.0)));

      i=i+30;

      }

      painter1.drawLine(0+(95*qSin(i*PI/180.0)),0-(95*qCos(i*PI/180.0)),0+(110*qSin(i*PI/180.0)),0-(110*qCos(i*PI/180.0)));

      i=i+30;

      }

      for(int j = 0;j<360;)

      {

      if((j%30) == 0 || (j%90) == 0)

      {

      j= j+10;

      }

      painter1.drawLine(0+(100*qSin(j*PI/180.0)),0-(100*qCos(j*PI/180.0)),0+(110*qSin(j*PI/180.0)),0-(110*qCos(j*PI/180.0)));

      j=j+10;

      }

      painter1.setPen(QPen(QColor(Qt::blue),3,Qt::SolidLine,Qt::FlatCap));

      QRect rect1(-7,-113,15,15);

      QRect rect1_1(-7,-95,15,15);

      QRect rect2(-112,-9,15,15);

      QRect rect3(-7,103,15,15);

      QRect rect4(100,-9,15,15);

      QString str_N = "N";

      QString str_S = "S";

      QString str_W = "W";

      QString str_E = "E";

      QFont font("宋體",16,QFont::Bold);

      painter1.setFont(font);

      painter1.drawText(rect1,Qt::AlignCenter,str_N);

      painter1.drawText(rect2,Qt::AlignCenter,str_W);

      painter1.drawText(rect3,Qt::AlignCenter,str_S);

      painter1.drawText(rect4,Qt::AlignCenter,str_E);

      QPixmap pixmap_pointer;

      pixmap_pointer.load(":/Global/Source/Global/Pointer.png");

      painter1.drawPixmap(rect1_1,pixmap_pointer);

      painter1.restore();

      QRect rect_pixmap(-15,-15,30,30);

      QPixmap pixmap_plane;

      pixmap_plane.load(":/Global/Source/Global/Plane.png");

      painter1.drawPixmap(rect_pixmap,pixmap_plane);

      }

      至于好多人不知道怎么在Lable上面繪圖,可以參考我以前寫的

      Qt 在控件上面繪圖 label,pushbutton。。。。。

      http://blog.csdn.net/z609932088/article/details/50952086

      Qt

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:項目推進計劃表-甘特圖,提高項目效率的絕佳工具
      下一篇:wps表格怎么折線圖
      相關文章
      亚洲狠狠久久综合一区77777| 亚洲熟妇无码另类久久久| 久久亚洲国产视频| 亚洲中文字幕不卡无码| 亚洲国产精品自产在线播放| 理论亚洲区美一区二区三区| 亚洲精品动漫免费二区| 亚洲国产成人综合精品| 亚洲AV无码专区在线观看成人 | 亚洲欧洲∨国产一区二区三区| 国产亚洲色婷婷久久99精品91| 国产成人精品曰本亚洲79ren| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | jjzz亚洲亚洲女人| 九月婷婷亚洲综合在线| 亚洲国产精品一区二区三区久久| 亚洲色偷拍区另类无码专区| 中文字幕精品亚洲无线码一区| 中文字幕不卡亚洲| 国产亚洲欧洲精品| 亚洲国产综合精品中文第一区| 亚洲最新视频在线观看| 亚洲天堂电影在线观看| 一区二区亚洲精品精华液| 亚洲国产精品无码久久98| 国产亚洲日韩在线a不卡| 亚洲免费视频一区二区三区| 怡红院亚洲怡红院首页| 亚洲成色WWW久久网站| 亚洲福利视频一区| 亚洲免费观看网站| 亚洲中文字幕久久精品无码VA | 亚洲AV无码专区在线电影成人 | 亚洲男人av香蕉爽爽爽爽| 亚洲无人区一区二区三区| 久久夜色精品国产亚洲AV动态图| 亚洲黄色高清视频| 亚洲AV成人一区二区三区在线看| 亚洲国产精品网站在线播放| 亚洲国产精品日韩| 久久精品国产亚洲沈樵|