www.pudn.com > routeplan_mainmenu.rar > drawmap.cpp
#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "drawmap.h" #include "mainwindow.h" #include "mainmenu.h" struct qj { int qjx; int qjy; }qj[3000]; struct hupo { int hpx; int hpy; }hupo[300]; struct shuiku { int skx; int sky; }shuiku[1000]; struct lvdi { int ldx; int ldy; }lvdi[600]; struct jumindi { int jmdx; int jmdy; }jumindi[1000]; struct shuangxianhe { int sxhx; int sxhy; }shuangxianhe[1000]; struct daolu1 { int dl1x; int dl1y; }daolu1[5000]; struct daolu2 { int dl2x; int dl2y; }daolu2[5000]; struct daolu3 { int dl3x; int dl3y; }daolu3[25000]; struct tielu { int tlx; int tly; }tielu[5000]; struct gongyuanlu { int gylx; int gyly; }gongyuanlu[5000]; struct gaosu { int gsx; int gsy; }gaosu[100]; struct qiao { int qx; int qy; }qiao[1000]; struct wenzi { int wzx; int wzy; }wenzi[1000]; struct diwu2 { int dw2x; int dw2y; }diwu2[1000]; float z=1.0; float ud=0.0; float rl=0.0; float z1[100]; float z2[100]; FILE *fpp1; char zifu[20]; int m=0; QString qs; QString Name; float x1=-100.0; float y11=-100.0; int main(int argc,char **argv) { QApplication a(argc,argv); QFont font("unifont",5); a.setFont(font); QTranslator *translator = new QTranslator(0); translator->load("drawmap.qm", "."); a.installTranslator(translator); QScrollView w; //w.setFixedSize(150,200); w.setCaption(QObject::tr("Hangzhou map")); MainWindow *m=new MainWindow; w.addChild(m); a.setMainWidget(&w); w.show(); return a.exec(); } MainWindow::MainWindow(QWidget *parent,const char *name) :QWidget(parent,name) { QPushButton *enxiao=new QPushButton(tr("zoom in"),this,"enxiao"); connect(enxiao,SIGNAL(clicked()),this,SLOT(suoxiao())); QPushButton *enlarge=new QPushButton(tr("zoom out"),this,"enlarge"); connect(enlarge,SIGNAL(clicked()),this,SLOT(fangda())); QPushButton *up1=new QPushButton(tr("up"),this,"up1"); connect(up1,SIGNAL(clicked()),this,SLOT(up())); QPushButton *down1=new QPushButton(tr("down"),this,"down1"); connect(down1,SIGNAL(clicked()),this,SLOT(down())); QPushButton *right1=new QPushButton(tr("right"),this,"right1"); connect(right1,SIGNAL(clicked()),this,SLOT(right())); QPushButton *left1=new QPushButton(tr("left"),this,"left1"); connect(left1,SIGNAL(clicked()),this,SLOT(left())); QPushButton *reset1=new QPushButton(tr("reset"),this,"reset1"); connect(reset1,SIGNAL(clicked()),this,SLOT(reset())); QPushButton *routeplan=new QPushButton(tr("Route Plan"),this); connect(routeplan,SIGNAL(clicked()),this,SLOT(popupDialog())); QListView *w = new QListView(this ); w->setRootIsDecorated( true ); w->addColumn( QString(tr("DiMing")) ); w->addColumn(QString("NUM")); QListViewItem *i1= new QListViewItem( w, QString(tr("Shangchengqu"))); QListViewItem *i2 = new QListViewItem( w, QString(tr("Xihuqu")) ); QListViewItem *i3 = new QListViewItem( w, QString(tr("Gongshuqu")) ); QListViewItem *i4 = new QListViewItem( w, QString(tr("Xiachengqu")) ); QListViewItem *i5 = new QListViewItem( w, QString(tr("Jiangganqu")) ); i1->setOpen( true ); i2->setOpen( true ); i3->setOpen( true ); i4->setOpen( true ); i5->setOpen( true ); if((fpp1=fopen("shangchengqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild(), qs, QString::number(m)); m++; } } fclose(fpp1); if((fpp1=fopen("xiachengqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling(), qs,QString::number(m)); m++; } } fclose(fpp1); if((fpp1=fopen("gongshuqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling(), qs,QString::number(m)); m++; } } fclose(fpp1); if((fpp1=fopen("jiangganqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling()->nextSibling(), qs,QString::number(m)); m++; } } fclose(fpp1); if((fpp1=fopen("xihuqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling()->nextSibling()->nextSibling(), qs, QString::number(m)); m++; } } fclose(fpp1); connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(reset())); connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(chaxun( QListViewItem *))); connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(fangda())); Drawmap *na=new Drawmap(this,"Drawmap"); connect(enxiao,SIGNAL(clicked()),na,SLOT(update())); connect(enlarge,SIGNAL(clicked()),na,SLOT(update())); connect(up1,SIGNAL(clicked()),na,SLOT(update())); connect(down1,SIGNAL(clicked()),na,SLOT(update())); connect(right1,SIGNAL(clicked()),na,SLOT(update())); connect(left1,SIGNAL(clicked()),na,SLOT(update())); connect(reset1,SIGNAL(clicked()),na,SLOT(update())); connect(w,SIGNAL(doubleClicked( QListViewItem * )),na,SLOT(update())); QVBoxLayout *leftLayout=new QVBoxLayout; leftLayout->addWidget(enxiao); leftLayout->addWidget(enlarge); leftLayout->addWidget(up1); leftLayout->addWidget(down1); leftLayout->addWidget(right1); leftLayout->addWidget(left1); leftLayout->addWidget(reset1); leftLayout->addWidget(routeplan); leftLayout->addWidget(w); QGridLayout *rightLayout=new QGridLayout; rightLayout->addWidget(na,0,0); QHBoxLayout *mainLayout=new QHBoxLayout(this); mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout); } Drawmap::Drawmap(QWidget *parent,const char *name) :QWidget(parent,name) { setBackgroundColor(QColor(225,255,255)); setFixedSize(2000,2000); } void MainWindow::suoxiao() { ud=ud+155*(z-1); rl=rl+125*(z-1); z=z/2; } void MainWindow::fangda() { z=z*2; ud=ud-155*(z-1); rl=rl-125*(z-1); } void MainWindow::up() { ud=ud-30; } void MainWindow::down() { ud=ud+30; } void MainWindow::left() { rl=rl-30; } void MainWindow::right() { rl=rl+30; } void MainWindow::reset() {rl=0; ud=0; z=1; x1=-100.0; y11=-100.0; } void MainWindow::popupDialog() { mainmenubase *f = new mainmenubase( 0, "jiemian"); f->exec(); delete f; } void MainWindow::chaxun( QListViewItem *i ) { if ( !i ) return; QListViewItem *item=(QListViewItem *)i; int nx; Name=item->text(1); for(nx=0;nx<100;nx++) {if(Name==QString::number(nx)) { x1=z*500*(z1[nx]-120.081078)/0.167662; y11=z*607*(30.374923-z2[nx])/0.203584; rl=rl-x1+80; ud=ud-y11+80; x1=x1-50; y11=y11-80; cout< toUnicode (zhongwen) ; p.translate(wenzi[n].wzx,wenzi[n].wzy); p.drawText(0,0,qs); p.translate(-wenzi[n].wzx,-wenzi[n].wzy); n++; } } fclose(fdw); if((fsplm=fopen("shuipingluming.txt","r"))!=NULL) { QPainter p(this); while(fscanf(fsplm,"%f %f %s\n",&x2,&y2,zhongwen)==3) { wenzi[n].wzx=(int)(z*500*(x2-120.081078)/0.167662+rl); wenzi[n].wzy=(int)(z*607*(30.374923-y2)/(30.374923-30.171339)+ud); QTextCodec *codec = QTextCodec::codecForName("GBK"); QString qs = codec->toUnicode (zhongwen) ; p.translate(wenzi[n].wzx,wenzi[n].wzy); p.drawText(0,0,qs); p.translate(-wenzi[n].wzx,-wenzi[n].wzy); n++; } } fclose(fsplm); if((fdw2=fopen("diwu2.txt","r"))!=NULL) { QPainter p(this); p.setBrush(QColor("black")); while(fscanf(fdw2,"%f %f\n",&x2,&y2)==2) { diwu2[o].dw2x=(int)(z*500*(x2-120.081078)/0.167662+rl); diwu2[o].dw2y=(int)(z*607*(30.374923-y2)/(30.374923-30.171339)+ud); p.moveTo((int)diwu2[o].dw2x,(int)diwu2[o].dw2y); p.drawEllipse((int)diwu2[o].dw2x,(int)diwu2[o].dw2y,5,5); o++; } } fclose(fdw2); p.setBrush(QColor("red")); p.moveTo((int)x1,(int)y11); p.drawEllipse((int)x1,(int)y11,10,10); }