【正文】
Lati=%lf\n,WidthNumber,HeightNumber,pixPerLont,pixPerLati)。}int zhMap::getMapABinfo(GPS_DATA amp。 A_gpsdata,GPS_DATA amp。 B_gpsdata){ =A_lati。 =A_lont。 =B_lati。 =B_lont。}int zhMap::getCurrMap(const GPS_DATA amp。 gpsdata,QPixmap amp。 pixmap){int xcenter,ycenter。int Ax,Ay,Bx,By,Cx,Cy,Dx,Dy。int idA,idB,idC,idD。int idi,idj。//int AxW,AyH。//用于處理A點(diǎn)的圖塊,表明取了多少走QString fileStr。//判斷是否在范圍if(!(B_lont amp。amp。 A_lont)){ PDF(1,out of lont range!\n)。 return 1。}//out of range!if(!(A_lati amp。amp。 B_lati)){ PDF(1,out of lati range!\n)。 return 1。 }//out of range!!//中心點(diǎn)轉(zhuǎn)換成像素點(diǎn)xcenter=(int)(()*pixPerLont)。ycenter=(int)(()*pixPerLati)。//==計算出請求圖的四點(diǎn)像素坐標(biāo)Ax=xcenter(zhGpsWidth)/2。Ay=ycenter(zhGpsHeight)/2。Bx=Ax+zhGpsWidth。By=Ay。Cx=Ax。Cy=Ay+zhGpsHeight。Dx=Bx。Dy=Cy。//由四點(diǎn)像素坐標(biāo)計算要裝載的圖片號。idi=Ax/subWidth+1。idj=Ay/subWidth。idA=idj*WidthNumber+idi。idi=Bx/subWidth+1。idj=By/subWidth。idB=idj*WidthNumber+idi。idi=Cx/subWidth+1。idj=Cy/subWidth。idC=idj*WidthNumber+idi。idi=Dx/subWidth+1。idj=Dy/subWidth。idD=idj*WidthNumber+idi。//裝載備用圖片,如果已經(jīng)存在就不要裝了(%s/_%,mapPath,idA)。picloadFlag=(fileStr)。(%s/_%,mapPath,idB)。picloadFlag=(fileStr)。(%s/_%,mapPath,idC)。picloadFlag=(fileStr)。(%s/_%,mapPath,idD)。picloadFlag=(fileStr)。//====以左上點(diǎn)為標(biāo)準(zhǔn),計算并裝載的各區(qū)域(amp。pixmap,this)。AxW=subWidthAx%subWidth。AyH=subWidthAy%subWidth。if(AxWzhGpsWidth amp。amp。 AyHzhGpsHeight) { (0,0,pixmapA,(Ax%subWidth),(Ay%subWidth),(zhGpsWidth),(zhGpsHeight))。//org x y pic pic x y w h}else if(AxWzhGpsWidth amp。amp。 AyH=zhGpsHeight){ (0,0,pixmapA,(Ax%subWidth),(Ay%subWidth),(zhGpsWidth),AyH)。//org x y pic pic x y w h (0,AyH,pixmapC,(Ax%subWidth),0,(zhGpsWidth),Cy%subWidth)。//org x y pic pic x y w h}else if(AxW=zhGpsWidth amp。amp。 AyH=zhGpsHeight){ (0,0, pixmapA,(Ax%subWidth),(Ay%subWidth), AxW,AyH)。//org x y pic pic x y w h (AxW,0, pixmapB,0,(By%subWidth), (zhGpsWidthAxW),AyH)。//org x y pic pic x y w h (0,AyH, pixmapC, (subWidthAxW),0, AxW,(zhGpsHeightAyH))。//org x y pic pic x y w h (AxW,AyH,pixmapD,0,0, (zhGpsWidthAxW),(zhGpsHeightAyH))。//org x y pic pic x y w h}else if(AxW=zhGpsWidth amp。amp。 AyHzhGpsHeight){ (0,0, pixmapA,(Ax%subWidth),(Ay%subWidth), AxW,zhGpsHeight)。//org x y pic pic x y w h (AxW,0, pixmapB,0,(By%subWidth), (zhGpsWidthAxW),zhGpsHeight)。//org x y pic pic x y w h}//============()。 }View ::View(QCanvasamp。 canvas,QWidget * parent ,const char * name): QCanvasView(amp。canvas,parent,name){ //====paint a b pic pcanvas=amp。canvas。(QSize(zhGpsWidth,zhGpsHeight))。(MapInfoApositon,MapInfoBpositon)。=+()/2。=+()/2。(maingps,zhmap)。(zhmap)。 (zhGpsWidth, zhGpsHeight)。 //setFixedSize(zhGpsHeight, zhGpsHeight)。 r = new QCanvasRectangle(zhGpsWidth/2, zhGpsHeight/2, zhPR, zhPR, amp。canvas)。 // //rsetVelocity(, 0)。 // speed rsetBrush(QColor(250,10,10))。 rsetZ(10)。 rshow()。 }void View::setPosition(double lontchange,double latichange,int sw){=latichange。=lontchange。=sw。(maingps,zhmap)。pcanvassetBackgroundPixmap(zhmap)。 //pcanvasupdate()。 }void View::changePosition(double lontchange,double latichange){+=latichange。+=lontchange。PDF(2,change lat=%lf lont=%lf\n,)。//=====================(maingps,zhmap)。pcanvassetBackgroundPixmap(zhmap)。 //pcanvasupdate()。 } void View::contentsMousePressEvent(QMouseEvent *e) { /*if(epos().x())+=。+=。(maingps,zhmap)。pcanvassetBackgroundPixmap(zhmap)。 rmove(epos().x(), epos().y())。 */}strSNR 類程序include include include define X_ADJ(a) ((int)(float(a)*xScreenCorr))define Y_ADJ(a) ((int)(float(a)*yScreenCorr))define S_ADJ(a) ((int)(float(a)*xyScreenCorr))float xScreenCorr=1, yScreenCorr=1, xyScreenCorr=1。 // global, bad but easySatSNR::SatSNR( QWidget * parent, const char * name, WFlags f): QWidget(parent, name, f) { setFixedSize(240,150)。 int i。 for(i=0。i12。i++) {d_pSatInfo[i].d_snr=68。 d_pSatInfo[i].d_updated=true。 d_pSatInfo[i].d_satName=p。 }}SatSNR::~SatSNR(){}void SatSNR::SetData(const GPS_STASNR amp。 GPSStaSNR){for (int i = 0。 i 12。 ++i) { SatInfo amp。 satInfo = d_pSatInfo[i]。 STA_INFO STAInfo=[i]。 =。 =true。}update()。}void SatSNR::paintEvent( QPaintEvent * ){ (this)。 QPainter * painter=amp。p。 int xSPC = X_ADJ(4)。 int ySPC = Y_ADJ(4)。 int WIDTH = X_ADJ(15)。 int offset = X_ADJ(2)。 //==============設(shè)定好一些參數(shù) int x = xSPC + offset。 int y = minimumHeight() ySPC。 int min = x。 int max = min + 11*(WIDTH + xSPC) + WIDTH 1。 int threshold = Y_ADJ(7)。 // 7% mark //===計算好一些參數(shù) paintersetPen( QPen( Qt::black, 0, QPen::SolidLine) )。 for (int i = 0。 i 12。 ++i) { SatInfo amp。 satInfo = d_pSatInfo[i]。 //獲取一個衛(wèi)星信號 int strength = 。 //scaled 50pixel == 100% //50個像素表示滿強(qiáng)度 int clip = x + WIDTH + xSPC 1。 if (clip max) clip = max。 if (()) { paintereraseRect(x, y+Y_ADJ(10), WIDTH, Y_ADJ(99))。 // draw the marker lines for (int p = threshold。 p = Y_ADJ(50)。 p+=Y_ADJ(10) ) painterdrawLine ( x, yY_ADJ(12)p, clip, yY_ADJ(12)p )。 } else if () { paintereraseRect(x, y+Y_ADJ(10), WIDTH, Y_ADJ(99))。 // repair the marker lines for (int p = threshold。 p = Y_ADJ(50)。 p+=Y_ADJ(10) ) painterdrawLine ( x, yY_ADJ(12)p, clip, yY_ADJ(12)p )。 painterdrawText(x+X_ADJ(2),y, )。 // when signal is lower than threshold, gps does not use it for reading //如果信號強(qiáng)度低于保持值,gps不會使用它,所以用紅色表示。 const QColor amp。c = Qt::red。 //(gpsDatad_aliveGPS ? (strength threshold ? Qt::red : Qt::green) : Qt::red)。 paintersetBrush( QBrush( c,