From 5600af4e391211960bb109f5f58c153da8b6e08d Mon Sep 17 00:00:00 2001 From: notplus Date: Wed, 4 Nov 2020 22:46:38 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=9B=BE=E5=B1=82?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/ShapeFileViewer/v16/.suo | Bin 99840 -> 108544 bytes ShapeFileViewer/MainForm.Designer.cs | 2 ++ ShapeFileViewer/MainForm.cs | 32 ++++++++++++------ ShapeFileViewer/bin/Debug/ShapeFileViewer.exe | Bin 28672 -> 29184 bytes ShapeFileViewer/bin/Debug/ShapeFileViewer.pdb | Bin 36352 -> 34304 bytes ShapeFileViewer/bin/Debug/Shapefile.dll | Bin 16384 -> 16896 bytes ShapeFileViewer/bin/Debug/Shapefile.pdb | Bin 69120 -> 67072 bytes ...eFileViewer.csproj.CoreCompileInputs.cache | 2 +- ...hapeFileViewer.csproj.FileListAbsolute.txt | 13 +++++++ ...peFileViewer.csproj.GenerateResource.cache | Bin 1140 -> 1140 bytes ...peFileViewer.csprojAssemblyReference.cache | Bin 32715 -> 4505 bytes ShapeFileViewer/obj/Debug/ShapeFileViewer.exe | Bin 28672 -> 29184 bytes ShapeFileViewer/obj/Debug/ShapeFileViewer.pdb | Bin 36352 -> 34304 bytes Shapefile/ShapeFile.cs | 7 ++++ Shapefile/bin/Debug/Shapefile.dll | Bin 16384 -> 16896 bytes Shapefile/bin/Debug/Shapefile.pdb | Bin 69120 -> 67072 bytes .../Shapefile.csproj.FileListAbsolute.txt | 6 ++++ .../Shapefile.csprojAssemblyReference.cache | Bin 8212 -> 424 bytes Shapefile/obj/Debug/Shapefile.dll | Bin 16384 -> 16896 bytes Shapefile/obj/Debug/Shapefile.pdb | Bin 69120 -> 67072 bytes 20 files changed, 51 insertions(+), 11 deletions(-) diff --git a/.vs/ShapeFileViewer/v16/.suo b/.vs/ShapeFileViewer/v16/.suo index 071701a75d705eebfe749b5b648f369f8c36b489..636989cfec9a380e78d0cb84dfae0b65c4df60ea 100644 GIT binary patch delta 12670 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 AH2?qr delta 5004 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 literal 36352 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 b|MWf8*$}^vX3uwfdAOuQA2_eAXJmO0_ zDQ##+8*VG&*kU_c2m>ljpjMy*SnX)V0d0lSvIGYNOQ$HqbSfR{|9tNT8LTgJ|M&dP zIp6t~``sn&?V`O?Joj|A?^b0OdB4k)o#}`&qG~wIsMD_R-nUpBa)rqA7Zigw2}B{1;pvFkg=BJEwN39G9QS=8%H4hOdC)({ZxUnN z+Te^x6-wzeN-T@EAEevoqjofqSf*$;4+uY*+%^MsWqulw4fM6mWQ;S~X6du94VhrG zZ4RFe)r!@y+b|VF$}pdr$Frjj)=1P#9A9S8O&F=%X_76&TrcIGNHjxc(L8FMfNVP@ z(JCwxLc<1QywPblVGX&z<|)X4UF(iY7?Q~yIM$$gy$qHN z^E3xF+%s&mXgD`;zm+gD8j2$mhr(gt z5S~qR%w(HeKH<9=FzFMmhmBtc;wcZ8)ufBYUCX3KAL}%&f7SYm)*}&px}%f+V4OmU zy;=*jKj>=8P8+T4z* zr1^IuGajBeGSp6}46tXbKf(?6`&nlMSYu7rBMxgWu`bh|9Xco0&!y*RyIgAvIxwkI zv99*BE{fVV+rtdjkMtnY{crkBT8x@;(4{7` zO&uagOF&bx_|X^{95Zl11TN{PevT!2G|1^vIg|}Q$LcMn;kcEV&M2l4l&t9@C^D7u zaJ>WQVik3%$EXljnyEokF=bIZXh;lqF$!h5Oau*?hGW1%YSlxlr7AMb*XgWW+&V3jr(!R?7}Yudp@98CFqU_K`V4Lnz>B~cy?$_b(alF zi)>cIltJ}be0jH}_672kMW?eh`76{Z^3!#XwwX+NU1^*DlEswDs|@;F6)QiLc{JJ@ z4XX8Myr$(It#&xJ#iQnk#^*eot5f%Sv_;2`dsLuf=RA5$$8KqQ62mS>(fXX|V6vRa zDu&i;ipFB-c`x>?Gff3)zeg>0WG3*f2U3G{{ejdZ!iLl{Y_VsmBudr9MHhi4MPt+~ zU&A(S_o&=nuF_~MUS+&8LscVamPhaVPf;4J^60iIjv%;IV<-LCX#ySfXqB~5rBiOc zE`tuAR2fuppPo@!RIlj=bX~b>1WhX#$TTUR7T>2J=<)khO$D?+N|a;aZYiWc73zkR zZ=c44FX!M98y5-T=j38p4dvwaVK*f}#9|_z1{Z29{)1%D51uCIRkBS4ypc;?H zIj5+Up7n??MQMcI^$?4pN-4cq561r^)gwx2tfme+h#LeAJ?hbPRMT5jfTv(7-O_YT zlwcC2WR!4~4k|H{L7keeiB|(JsWLjQsb4%57))gpIj50#{vHI!mU6>u0mtc6(YlFGNAFW4w}b zW7ysYkEHi>xkIoG3gCS!^xz&GuAt4BYg8p|!5{`ayav&Z2Q)_aQlKZ?fGBRFJLuA& z4*)*82E`l9?H@8E(iaf;R_en`Hw|iI-}VK9c&@WnX`QUKPV0QF4O&+~lWDECTeN;h zYnR?DC+JmN`5tndT>4D=h3E@ZO`9gmVD;FY`6%)Arj`C3v5wBVR!K-6caqP59kyH)E#?b)jB zVr{R`cB%6_1Knhwe#p*J=i#~F=lW^7{xaiI3E-;pH|VGUYpuiKXo+ajK6MG6 zc<1lX-?}XsyQ&19RHfL}CD=$3));6RJ})J>0$Po&C22hVV(D?pfUd_!MjUN+D>8>p z=t3QA@B6>w;#asiANJkFCVtqrQugl1^htAV>#_}v>w0%&53y3#G;Um0*Ser_-Kxe7 z)H(pYJq5RA?~6rwR&eR8z_A10d~?dd^G~h&N%z%o@4I8p87T)Z)O2$P-18zF%kh8I z@+$XaW%jVk&7t)>zxer_7h6XB^W@Hjhxzk&YW3IGZ)k36T)EM$tQwPW0oen;Pub4w l&PowC+~=!Cx<{)P^kz=%6TNZO|5h@lvNtsG6VY8}{RiYCaXJ71 delta 3537 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 diff --git a/ShapeFileViewer/obj/Debug/ShapeFileViewer.csprojAssemblyReference.cache b/ShapeFileViewer/obj/Debug/ShapeFileViewer.csprojAssemblyReference.cache index 51c1ff42f0eb6e5d9c118381557fd276e15c6e81..2fb4bf2e7148a444a4e980842fcda02cf427b35a 100644 GIT binary patch delta 1205 zcmbtT&2JJx6yHJiW0t}~F|@Q*iCBvkR}fm{ppBunjfu62Atp$4iqn?36kIko_2Sv+ zrOwI3_&0bk@!-Ljcrfv(7rnHe_2wUd@9`BHZt{}-&BxAr?>E2q=4+F@ioU%;$X~HW zt|>&4Bt;cdu9tql0&`qb4M5h!8}+<+p?xV*+|v;}0Lln}{y1$W%v2(k%o6IwT_1qg zT)ldG$!1l)Q?nl`25dBnvxW%K`^VmDm^S3NscEGt|F7s_}SIXuJYi#AYb3a)u3PR(qctkKQ zw0CYLQz~I@7koqs0Mh&xtMiSD#dSK0>mUFcW+G1k+<%(QrnqupUVQWh-M?}1D|A^L z^^KB{nDM z*#F&dx>Py>&T2X&#~`m59G54D=5?>1*BOZE>2&!bbC^!g!VaD7GJ~;A z?t4GEZ-eAaI4NUYTXkRT)*WRXFT=a3JmB^%?l5~3VBO+N7Tc6a>ya2(Cw%*^_fPH? y!s&x&1dHYsH+O<2!D?WuqV*cbKnV}Kpq?EU6l%}~FLu}kZ`pDgBS?S1#q$rq*b(6X literal 32715 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 ar4;>gQHoBwQi=|uEp?wP^cGdpQU3)%Rr9TSfe zop$$?kIelUQ7-g+7_PLRXsxrCtFflu3Mz!}TKhgVPOY<#sh>wMwqjjTK-D8EJkSAzio-th>3o~PeJv^<>oLb}9APr4NQWwvbGpkk| zC17&J$HT)kg4P5HAv11$9kO9zk8l^f2G%6D)=Kqr5lH7ix-}VW(FK=j)J;WLE=jkh zfU_=Rml9SL!v1E8u`V;|gEN0w;3QO>l5?qSrN;!qZ@hUj;C= zIGQmx!>nuZ87!h@h~Hq5%hlpDS;QWIcr}aY9O5h%QF~fMbcpr56*eP1WoK>n66NL3W6} zk(Dk(qynZ|I8Fj+3RKO(&mzZrq7 zTR585E!%`U7&X)ZZ|Xf&L9IJCQwKt_XKX=&v!r4=3=^qdcw{V+T}OsVjp3NF-fWi) zBQD6q+coxNRwCKI&i28rFtfL^cs^a}Etf^}NxKNmr!JdzvPl=n&naSuvhrt$MG0rx zm0)%$ZwXk+nLDX@Hz&5{^@I#+>X1SDb__*frjV9OY0&;Wd1T<5^~eTUo5F*1~I9pj!J?vnq!lLslCg zzRo^pF3wvoPD|qf9?@r!#0!+mDUC%*8lOa6s^Tg3l!6@_{(LqI{=wbsiQ}jQ9Ia_yTk{(ijxd>Wl!b&;~sQ#nG8TQ#9^%yXOU9 znWr1p9PKW5fPNtO8?^?}_DkZElJZ57*Gv4HrQF*^o^GBVJ3D$%*`-4gU6;4wOd!&5}3earMBTIyYf+1exxgeBz}iS~u~{{?8!D;{q3 zHSzg57(R|r4EoaCj|A_cc3w}MUVN1N%cm(up0{4)q{^o^-Fe>46mZ_xY0x|0#~OA# zY`wnuz9ZO6et6$*E?0`q`Xa!w6a^L-Z9t#kWZJ-d!n+BV$2_+I54gL4CA1m1+}#6Q zCpePsfxJ`S2Au9@fAVYxjsW^;hS3N7soDwrkanr25SPAn)Cw$)qPS>1w4HWi#J-gF zvA$cmNR{Jtgs6uO!ssR)Dr-UaZsnm{Q(7%FAHA8<#(487hsr7(&y)I7Dwo<*+8T4W z%A<{D1u8N&NdI&B-kZbqd43oUnqL!Ow^ign`>b7>cCVA)d$bVhwwH|RKh zrLe|GnGbw}3c<|qbGFBOT zr+t5=axJ7jp-I{i$Tb>Ao2K#7)M)SN=crzrg@x`?EO)8hbdDOde<$cGbUf2zs2;i- zRF}HnETl8)3*3^r)FY_0PepvWs!tW0`M^=0LUmqx8dT@aD%F4)8mHQ1r6bxOX{M^d z0!3UCa7^D;6Yxko1H>*p-0H+8}rvxi=#BdE=3VDebZV_yz8DQ4a8ekmv z{ssx%OTF|mJwrYRkV&n?fHK)C;dA&WU zxYC|I>ZFIGHgrbq+~Nb0yS}-z&FY{VV$tZ*w&)%8&Gt`Q>3knx*{eaW zL&nqGSmchTNJq4tb-Q`=9Q)wt(gLpPrnZh2>kg6vk@wES1EWuA`Ja4t^|{y9H#9z~ z&py&(K3!$+3su)0FbV_nRG`5f(p1?fBcxOy`Mh&E?)E^r2k%&U?hyHtgZBHO@`RAv zKm?NSz|R{@&Y~MC40Y)E(*AW zo=Ny`e^}l)bFXd$lKn0tP{6Kbfn-nWx*e%G3}Zi@(x|&%hf?773eVVocw@!G>age1 z4YP|*-BcAkJ)1SYw9O^4C(%#u>x3$*TJ6gBcp^k?R=dJyhTcaxu`#b)w`X+k*1G3_D AH2?qr delta 5004 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 literal 36352 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 b|MWf8*$}^vX3uwfdAOuQA2_eAXJmO0_ zDQ##+8*VG&*kU_c2m>ljpjMy*SnX)V0d0lSvIGYNOQ$HqbSfR{|9tNT8LTgJ|M&dP zIp6t~``sn&?V`O?Joj|A?^b0OdB4k)o#}`&qG~wIsMD_R-nUpBa)rqA7Zigw2}B{1;pvFkg=BJEwN39G9QS=8%H4hOdC)({ZxUnN z+Te^x6-wzeN-T@EAEevoqjofqSf*$;4+uY*+%^MsWqulw4fM6mWQ;S~X6du94VhrG zZ4RFe)r!@y+b|VF$}pdr$Frjj)=1P#9A9S8O&F=%X_76&TrcIGNHjxc(L8FMfNVP@ z(JCwxLc<1QywPblVGX&z<|)X4UF(iY7?Q~yIM$$gy$qHN z^E3xF+%s&mXgD`;zm+gD8j2$mhr(gt z5S~qR%w(HeKH<9=FzFMmhmBtc;wcZ8)ufBYUCX3KAL}%&f7SYm)*}&px}%f+V4OmU zy;=*jKj>=8P8+T4z* zr1^IuGajBeGSp6}46tXbKf(?6`&nlMSYu7rBMxgWu`bh|9Xco0&!y*RyIgAvIxwkI zv99*BE{fVV+rtdjkMtnY{crkBT8x@;(4{7` zO&uagOF&bx_|X^{95Zl11TN{PevT!2G|1^vIg|}Q$LcMn;kcEV&M2l4l&t9@C^D7u zaJ>WQVik3%$EXljnyEokF=bIZXh;lqF$!h5Oau*?hGW1%YSlxlr7AMb*XgWW+&V3jr(!R?7}Yudp@98CFqU_K`V4Lnz>B~cy?$_b(alF zi)>cIltJ}be0jH}_672kMW?eh`76{Z^3!#XwwX+NU1^*DlEswDs|@;F6)QiLc{JJ@ z4XX8Myr$(It#&xJ#iQnk#^*eot5f%Sv_;2`dsLuf=RA5$$8KqQ62mS>(fXX|V6vRa zDu&i;ipFB-c`x>?Gff3)zeg>0WG3*f2U3G{{ejdZ!iLl{Y_VsmBudr9MHhi4MPt+~ zU&A(S_o&=nuF_~MUS+&8LscVamPhaVPf;4J^60iIjv%;IV<-LCX#ySfXqB~5rBiOc zE`tuAR2fuppPo@!RIlj=bX~b>1WhX#$TTUR7T>2J=<)khO$D?+N|a;aZYiWc73zkR zZ=c44FX!M98y5-T=j38p4dvwaVK*f}#9|_z1{Z29{)1%D51uCIRkBS4ypc;?H zIj5+Up7n??MQMcI^$?4pN-4cq561r^)gwx2tfme+h#LeAJ?hbPRMT5jfTv(7-O_YT zlwcC2WR!4~4k|H{L7keeiB|(JsWLjQsb4%57))gpIj50#{vHI!mU6>u0mtc6(YlFGNAFW4w}b zW7ysYkEHi>xkIoG3gCS!^xz&GuAt4BYg8p|!5{`ayav&Z2Q)_aQlKZ?fGBRFJLuA& z4*)*82E`l9?H@8E(iaf;R_en`Hw|iI-}VK9c&@WnX`QUKPV0QF4O&+~lWDECTeN;h zYnR?DC+JmN`5tndT>4D=h3E@ZO`9gmVD;FY`6%)Arj`C3v5wBVR!K-6caqP59kyH)E#?b)jB zVr{R`cB%6_1Knhwe#p*J=i#~F=lW^7{xaiI3E-;pH|VGUYpuiKXo+ajK6MG6 zc<1lX-?}XsyQ&19RHfL}CD=$3));6RJ})J>0$Po&C22hVV(D?pfUd_!MjUN+D>8>p z=t3QA@B6>w;#asiANJkFCVtqrQugl1^htAV>#_}v>w0%&53y3#G;Um0*Ser_-Kxe7 z)H(pYJq5RA?~6rwR&eR8z_A10d~?dd^G~h&N%z%o@4I8p87T)Z)O2$P-18zF%kh8I z@+$XaW%jVk&7t)>zxer_7h6XB^W@Hjhxzk&YW3IGZ)k36T)EM$tQwPW0oen;Pub4w l&PowC+~=!Cx<{)P^kz=%6TNZO|5h@lvNtsG6VY8}{RiYCaXJ71 delta 3537 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 Z$DC2h11s7Ao?b>NPo5~1$B;?d^Ix>Bh4BCY diff --git a/Shapefile/obj/Debug/Shapefile.dll b/Shapefile/obj/Debug/Shapefile.dll index 5797dde636589eb823c9b4360359eeea6dd80423..27b281e8e22257b678a63750ea95dd4089a9977d 100644 GIT binary patch delta 3592 zcmZ{n32;?s701u_efQn_-o07g%SHl$EQBm%Wy=OqC;<}oMIb>dAOuQA2_eAXJmO0_ zDQ##+8*VG&*kU_c2m>ljpjMy*SnX)V0d0lSvIGYNOQ$HqbSfR{|9tNT8LTgJ|M&dP zIp6t~``sn&?V`O?Joj|A?^b0OdB4k)o#}`&qG~wIsMD_R-nUpBa)rqA7Zigw2}B{1;pvFkg=BJEwN39G9QS=8%H4hOdC)({ZxUnN z+Te^x6-wzeN-T@EAEevoqjofqSf*$;4+uY*+%^MsWqulw4fM6mWQ;S~X6du94VhrG zZ4RFe)r!@y+b|VF$}pdr$Frjj)=1P#9A9S8O&F=%X_76&TrcIGNHjxc(L8FMfNVP@ z(JCwxLc<1QywPblVGX&z<|)X4UF(iY7?Q~yIM$$gy$qHN z^E3xF+%s&mXgD`;zm+gD8j2$mhr(gt z5S~qR%w(HeKH<9=FzFMmhmBtc;wcZ8)ufBYUCX3KAL}%&f7SYm)*}&px}%f+V4OmU zy;=*jKj>=8P8+T4z* zr1^IuGajBeGSp6}46tXbKf(?6`&nlMSYu7rBMxgWu`bh|9Xco0&!y*RyIgAvIxwkI zv99*BE{fVV+rtdjkMtnY{crkBT8x@;(4{7` zO&uagOF&bx_|X^{95Zl11TN{PevT!2G|1^vIg|}Q$LcMn;kcEV&M2l4l&t9@C^D7u zaJ>WQVik3%$EXljnyEokF=bIZXh;lqF$!h5Oau*?hGW1%YSlxlr7AMb*XgWW+&V3jr(!R?7}Yudp@98CFqU_K`V4Lnz>B~cy?$_b(alF zi)>cIltJ}be0jH}_672kMW?eh`76{Z^3!#XwwX+NU1^*DlEswDs|@;F6)QiLc{JJ@ z4XX8Myr$(It#&xJ#iQnk#^*eot5f%Sv_;2`dsLuf=RA5$$8KqQ62mS>(fXX|V6vRa zDu&i;ipFB-c`x>?Gff3)zeg>0WG3*f2U3G{{ejdZ!iLl{Y_VsmBudr9MHhi4MPt+~ zU&A(S_o&=nuF_~MUS+&8LscVamPhaVPf;4J^60iIjv%;IV<-LCX#ySfXqB~5rBiOc zE`tuAR2fuppPo@!RIlj=bX~b>1WhX#$TTUR7T>2J=<)khO$D?+N|a;aZYiWc73zkR zZ=c44FX!M98y5-T=j38p4dvwaVK*f}#9|_z1{Z29{)1%D51uCIRkBS4ypc;?H zIj5+Up7n??MQMcI^$?4pN-4cq561r^)gwx2tfme+h#LeAJ?hbPRMT5jfTv(7-O_YT zlwcC2WR!4~4k|H{L7keeiB|(JsWLjQsb4%57))gpIj50#{vHI!mU6>u0mtc6(YlFGNAFW4w}b zW7ysYkEHi>xkIoG3gCS!^xz&GuAt4BYg8p|!5{`ayav&Z2Q)_aQlKZ?fGBRFJLuA& z4*)*82E`l9?H@8E(iaf;R_en`Hw|iI-}VK9c&@WnX`QUKPV0QF4O&+~lWDECTeN;h zYnR?DC+JmN`5tndT>4D=h3E@ZO`9gmVD;FY`6%)Arj`C3v5wBVR!K-6caqP59kyH)E#?b)jB zVr{R`cB%6_1Knhwe#p*J=i#~F=lW^7{xaiI3E-;pH|VGUYpuiKXo+ajK6MG6 zc<1lX-?}XsyQ&19RHfL}CD=$3));6RJ})J>0$Po&C22hVV(D?pfUd_!MjUN+D>8>p z=t3QA@B6>w;#asiANJkFCVtqrQugl1^htAV>#_}v>w0%&53y3#G;Um0*Ser_-Kxe7 z)H(pYJq5RA?~6rwR&eR8z_A10d~?dd^G~h&N%z%o@4I8p87T)Z)O2$P-18zF%kh8I z@+$XaW%jVk&7t)>zxer_7h6XB^W@Hjhxzk&YW3IGZ)k36T)EM$tQwPW0oen;Pub4w l&PowC+~=!Cx<{)P^kz=%6TNZO|5h@lvNtsG6VY8}{RiYCaXJ71 delta 3537 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 Date: Wed, 4 Nov 2020 23:02:13 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dmerge=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShapeFileViewer/MainForm.Designer.cs | 92 ++++++++++++++-------------- Shapefile/ShapeFile.cs | 8 +++ 2 files changed, 54 insertions(+), 46 deletions(-) diff --git a/ShapeFileViewer/MainForm.Designer.cs b/ShapeFileViewer/MainForm.Designer.cs index 1d99979..768a361 100644 --- a/ShapeFileViewer/MainForm.Designer.cs +++ b/ShapeFileViewer/MainForm.Designer.cs @@ -32,7 +32,11 @@ this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.labelLayer = new System.Windows.Forms.Label(); this.layerManager = new System.Windows.Forms.TreeView(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); this.DrawPanel = new System.Windows.Forms.PictureBox(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.dbfdataGridView = new System.Windows.Forms.DataGridView(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.打开Shape文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -44,22 +48,18 @@ this.browseShpBtn = new System.Windows.Forms.Button(); this.shpLabel = new System.Windows.Forms.Label(); this.shpfilePath = new System.Windows.Forms.TextBox(); - this.tabControl1 = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.dbfdataGridView = new System.Windows.Forms.DataGridView(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.DrawPanel)).BeginInit(); - this.menuStrip1.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - this.panel1.SuspendLayout(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.DrawPanel)).BeginInit(); this.tabPage2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dbfdataGridView)).BeginInit(); + this.menuStrip1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); this.SuspendLayout(); // // splitContainer1 @@ -90,13 +90,46 @@ this.layerManager.CheckBoxes = true; this.layerManager.Name = "layerManager"; // + // tabControl1 + // + resources.ApplyResources(this.tabControl1, "tabControl1"); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + // + // tabPage1 + // + this.tabPage1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tabPage1.Controls.Add(this.DrawPanel); + resources.ApplyResources(this.tabPage1, "tabPage1"); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.UseVisualStyleBackColor = true; + // // DrawPanel // resources.ApplyResources(this.DrawPanel, "DrawPanel"); - this.DrawPanel.BackColor = System.Drawing.Color.Coral; + this.DrawPanel.BackColor = System.Drawing.Color.White; this.DrawPanel.Name = "DrawPanel"; this.DrawPanel.TabStop = false; // + // tabPage2 + // + this.tabPage2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tabPage2.Controls.Add(this.dbfdataGridView); + resources.ApplyResources(this.tabPage2, "tabPage2"); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // dbfdataGridView + // + this.dbfdataGridView.AllowUserToOrderColumns = true; + this.dbfdataGridView.BackgroundColor = System.Drawing.SystemColors.ActiveBorder; + this.dbfdataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + resources.ApplyResources(this.dbfdataGridView, "dbfdataGridView"); + this.dbfdataGridView.Name = "dbfdataGridView"; + this.dbfdataGridView.RowTemplate.Height = 23; + // // menuStrip1 // this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -169,39 +202,6 @@ this.shpfilePath.Name = "shpfilePath"; this.shpfilePath.TextChanged += new System.EventHandler(this.shpfilePath_TextChanged); // - // tabControl1 - // - resources.ApplyResources(this.tabControl1, "tabControl1"); - this.tabControl1.Controls.Add(this.tabPage1); - this.tabControl1.Controls.Add(this.tabPage2); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.SelectedIndex = 0; - // - // tabPage1 - // - this.tabPage1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.tabPage1.Controls.Add(this.DrawPanel); - resources.ApplyResources(this.tabPage1, "tabPage1"); - this.tabPage1.Name = "tabPage1"; - this.tabPage1.UseVisualStyleBackColor = true; - // - // tabPage2 - // - this.tabPage2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.tabPage2.Controls.Add(this.dbfdataGridView); - resources.ApplyResources(this.tabPage2, "tabPage2"); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.UseVisualStyleBackColor = true; - // - // dbfdataGridView - // - this.dbfdataGridView.AllowUserToOrderColumns = true; - this.dbfdataGridView.BackgroundColor = System.Drawing.SystemColors.ActiveBorder; - this.dbfdataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - resources.ApplyResources(this.dbfdataGridView, "dbfdataGridView"); - this.dbfdataGridView.Name = "dbfdataGridView"; - this.dbfdataGridView.RowTemplate.Height = 23; - // // MainForm // resources.ApplyResources(this, "$this"); @@ -217,17 +217,17 @@ this.splitContainer1.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.DrawPanel)).EndInit(); + this.tabPage2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dbfdataGridView)).EndInit(); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); - this.tabControl1.ResumeLayout(false); - this.tabPage1.ResumeLayout(false); - this.tabPage2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dbfdataGridView)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Shapefile/ShapeFile.cs b/Shapefile/ShapeFile.cs index 8dee232..1bedca0 100644 --- a/Shapefile/ShapeFile.cs +++ b/Shapefile/ShapeFile.cs @@ -36,8 +36,10 @@ namespace Shapefile private OleDbConnection dbConnection_; private string connectionStringTemplate_; private string selectString_; + private bool is_render_; OleDbDataAdapter dataAdapter_; // 数据命令集到数据源的连接,用于填充DataSet以及更新该数据源 DataSet ds_; // 内存中的数据集,用于存储属性数据表 + public ShapeFile() : this(null, ConnectionStringTemplateVFPOLEDB) { } @@ -145,6 +147,12 @@ namespace Shapefile set { rawMetadataOnly_ = value; } } + public bool IsRender + { + get { return is_render_; } + set { is_render_ = value; } + } + public int Count { get -- Gitee From 9f0b06cf677152ac01774ce1c5f7d776e57b9382 Mon Sep 17 00:00:00 2001 From: TangYan <360383464@qq.com> Date: Wed, 4 Nov 2020 23:21:59 +0800 Subject: [PATCH 3/6] =?UTF-8?q?add:=E4=BF=AE=E5=A4=8DDataGridView=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShapeFileViewer/MainForm.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ShapeFileViewer/MainForm.cs b/ShapeFileViewer/MainForm.cs index 6629393..12b7414 100644 --- a/ShapeFileViewer/MainForm.cs +++ b/ShapeFileViewer/MainForm.cs @@ -7,6 +7,7 @@ using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -20,7 +21,17 @@ namespace ShapeFileViewer public MainForm() { + //设置窗体的双缓冲 + SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true); + UpdateStyles(); + InitializeComponent(); + + // 利用反射设置DataGridView的双缓冲(解决DataGridView显示卡顿问题) + Type dgvType = dbfdataGridView.GetType(); + PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", + BindingFlags.Instance | BindingFlags.NonPublic); + pi.SetValue(dbfdataGridView, true, null); } private void MainForm_Load(object sender, EventArgs e) @@ -70,6 +81,8 @@ namespace ShapeFileViewer shapefile.IsRender = true; AddLayer(shapefile.FileName); DrawPanel.Refresh(); + + dbfdataGridView.DataSource = shapefile.DataSet.Tables[0]; } private void AddLayer(String layerName) -- Gitee From 314b934cbf4b7fa93af71434f7602b53ab5cb36a Mon Sep 17 00:00:00 2001 From: TangYan <360383464@qq.com> Date: Thu, 5 Nov 2020 20:04:34 +0800 Subject: [PATCH 4/6] =?UTF-8?q?add:=E6=94=AF=E6=8C=81=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=B8=BAMif/Mid=E6=96=87=E4=BB=B6=EF=BC=88=E4=BB=85=E7=82=B9?= =?UTF-8?q?=E8=A6=81=E7=B4=A0=E5=92=8C=E5=A4=9A=E8=BE=B9=E5=BD=A2=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShapeFileViewer/MainForm.Designer.cs | 37 +++ ShapeFileViewer/MainForm.cs | 24 ++ ShapeFileViewer/MainForm.resx | 338 ++++++++++++++++++++------- Shapefile/ShapeFile.cs | 105 ++++++++- 4 files changed, 414 insertions(+), 90 deletions(-) diff --git a/ShapeFileViewer/MainForm.Designer.cs b/ShapeFileViewer/MainForm.Designer.cs index 768a361..62e1390 100644 --- a/ShapeFileViewer/MainForm.Designer.cs +++ b/ShapeFileViewer/MainForm.Designer.cs @@ -48,6 +48,10 @@ this.browseShpBtn = new System.Windows.Forms.Button(); this.shpLabel = new System.Windows.Forms.Label(); this.shpfilePath = new System.Windows.Forms.TextBox(); + this.mifPath = new System.Windows.Forms.TextBox(); + this.mifLabel = new System.Windows.Forms.Label(); + this.browseMifBtn = new System.Windows.Forms.Button(); + this.saveMifBtn = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -171,8 +175,12 @@ // panel1 // resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Controls.Add(this.saveMifBtn); + this.panel1.Controls.Add(this.browseMifBtn); this.panel1.Controls.Add(this.openShpBtn); + this.panel1.Controls.Add(this.mifLabel); this.panel1.Controls.Add(this.browseShpBtn); + this.panel1.Controls.Add(this.mifPath); this.panel1.Controls.Add(this.shpLabel); this.panel1.Controls.Add(this.shpfilePath); this.panel1.Name = "panel1"; @@ -202,6 +210,31 @@ this.shpfilePath.Name = "shpfilePath"; this.shpfilePath.TextChanged += new System.EventHandler(this.shpfilePath_TextChanged); // + // mifPath + // + resources.ApplyResources(this.mifPath, "mifPath"); + this.mifPath.Name = "mifPath"; + this.mifPath.TextChanged += new System.EventHandler(this.shpfilePath_TextChanged); + // + // mifLabel + // + resources.ApplyResources(this.mifLabel, "mifLabel"); + this.mifLabel.Name = "mifLabel"; + // + // browseMifBtn + // + resources.ApplyResources(this.browseMifBtn, "browseMifBtn"); + this.browseMifBtn.Name = "browseMifBtn"; + this.browseMifBtn.UseVisualStyleBackColor = true; + this.browseMifBtn.Click += new System.EventHandler(this.browseMifBtn_Click); + // + // saveMifBtn + // + resources.ApplyResources(this.saveMifBtn, "saveMifBtn"); + this.saveMifBtn.Name = "saveMifBtn"; + this.saveMifBtn.UseVisualStyleBackColor = true; + this.saveMifBtn.Click += new System.EventHandler(this.saveMifBtn_Click); + // // MainForm // resources.ApplyResources(this, "$this"); @@ -253,5 +286,9 @@ private System.Windows.Forms.TabPage tabPage1; private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.DataGridView dbfdataGridView; + private System.Windows.Forms.Button saveMifBtn; + private System.Windows.Forms.Button browseMifBtn; + private System.Windows.Forms.Label mifLabel; + private System.Windows.Forms.TextBox mifPath; } } \ No newline at end of file diff --git a/ShapeFileViewer/MainForm.cs b/ShapeFileViewer/MainForm.cs index 12b7414..beaa8b9 100644 --- a/ShapeFileViewer/MainForm.cs +++ b/ShapeFileViewer/MainForm.cs @@ -107,5 +107,29 @@ namespace ShapeFileViewer { } + + private void browseMifBtn_Click(object sender, EventArgs e) + { + SaveFileDialog saveFileDialog = new SaveFileDialog(); + saveFileDialog.Filter = "Mif files (*.mif)|*.mif|All files (*.*)|*.*"; + saveFileDialog.Title = "选择保存文件"; + saveFileDialog.InitialDirectory = Application.StartupPath; + saveFileDialog.RestoreDirectory = true; + saveFileDialog.ShowDialog(); + + mifPath.Text = saveFileDialog.FileName; + } + + private void saveMifBtn_Click(object sender, EventArgs e) + { + string savePath = mifPath.Text; + if (savePath.Length == 0) return; + if (shpList.Count == 0) return; + + shpList.ElementAt(0).SaveAsMif(savePath); + + MessageBox.Show("保存成功"); + + } } } diff --git a/ShapeFileViewer/MainForm.resx b/ShapeFileViewer/MainForm.resx index 7893ed4..dd81732 100644 --- a/ShapeFileViewer/MainForm.resx +++ b/ShapeFileViewer/MainForm.resx @@ -195,18 +195,87 @@ Top, Bottom, Left, Right - - Top, Bottom, Left, Right + + tabPage1 - - 0, 0 + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 623, 410 + + tabControl1 - + 0 + + tabPage2 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 1 + + + 3, 3 + + + 636, 438 + + + 1 + + + tabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer1.Panel2 + + + 0 + + + splitContainer1.Panel2 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer1 + + + 1 + + + 400 + + + 870, 444 + + + 224 + + + 4 + + + splitContainer1 + + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + DrawPanel @@ -246,16 +315,28 @@ 0 - - Fill + + Top, Bottom, Left, Right - - 3, 3 + + 0, 0 - - 620, 404 + + 623, 410 - + + 0 + + + DrawPanel + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + 0 @@ -297,78 +378,33 @@ 1 - - 3, 3 - - - 636, 438 - - - 1 - - - tabControl1 + + Fill - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 3 - - splitContainer1.Panel2 + + 620, 404 - + 0 - - splitContainer1.Panel2 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - splitContainer1 - - - 1 - - - 400 - - - 870, 444 - - - 224 - - - 4 - - - splitContainer1 + + dbfdataGridView - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + tabPage2 - - 2 + + 0 17, 17 - - 160, 22 - - - 打开Shape文件 - - - 44, 21 - - - 文件 - 0, 0 @@ -393,21 +429,21 @@ 3 - - 137, 17 - - - 68, 17 + + 44, 21 - - 当前图层: + + 文件 - - 83, 17 + + 160, 22 - - 当前XY坐标: + + 打开Shape文件 + + 137, 17 + 0, 566 @@ -432,9 +468,81 @@ 1 + + 68, 17 + + + 当前图层: + + + 83, 17 + + + 当前XY坐标: + Bottom, Left, Right + + Right + + + NoControl + + + 783, 48 + + + 75, 21 + + + 3 + + + 保存 + + + saveMifBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 0 + + + Right + + + NoControl + + + 702, 49 + + + 75, 21 + + + 3 + + + 浏览 + + + browseMifBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 1 + Right @@ -463,7 +571,37 @@ panel1 - 0 + 2 + + + NoControl + + + 12, 52 + + + 115, 18 + + + 2 + + + 保存到Mif文件: + + + MiddleCenter + + + mifLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 3 Right @@ -490,8 +628,32 @@ panel1 + 4 + + + Top, Bottom, Left, Right + + + 133, 49 + + + 563, 21 + + 1 + + mifPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 5 + 12, 16 @@ -517,7 +679,7 @@ panel1 - 2 + 6 Top, Bottom, Left, Right @@ -541,7 +703,7 @@ panel1 - 3 + 7 0, 478 diff --git a/Shapefile/ShapeFile.cs b/Shapefile/ShapeFile.cs index 1bedca0..6f2788f 100644 --- a/Shapefile/ShapeFile.cs +++ b/Shapefile/ShapeFile.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Data.OleDb; using System.Data; +using System.Text; namespace Shapefile { @@ -135,6 +136,106 @@ namespace Shapefile Dispose(); } + public void SaveAsMif(string path) + { + string mifPath = Path.ChangeExtension(path, "mif"); + string midPath = Path.ChangeExtension(path, "mid"); + + StreamWriter MIFStream = new StreamWriter(mifPath, false, Encoding.Default); + StreamWriter MIDStream = new StreamWriter(midPath, false, Encoding.Default); + + DataTable table = ds_.Tables[0]; + int columns = table.Columns.Count; + + + MIFStream.WriteLine("Version 650"); + MIFStream.WriteLine("CHARSET \"WindowsSimpChinese\""); + MIFStream.WriteLine("DELIMITER \",\""); + MIFStream.WriteLine("CoordSys NonEarth Units \"m\" Bounds ({0:F4},{1:F4}) ({2:F4},{3:F4})", mainHeader_.XMin, mainHeader_.YMin, mainHeader_.XMax, mainHeader_.YMax); + MIFStream.WriteLine("Columns {0}", columns); + + for (int i = 0; i < columns; i++) + { + string aline; + switch (table.Columns[i].DataType.Name) + { + case "String": + case "Text": + aline = "\t" + table.Columns[i].ColumnName + " char(50)"; + break; + case "Decimal": + aline = "\t" + table.Columns[i].ColumnName + " decimal(20,4)"; + break; + case "Date": + case "DateTime": + aline = "\t" + table.Columns[i].ColumnName + " Date"; + break; + default: + aline = "\t" + table.Columns[i].ColumnName + " char(250)"; + break; + } + MIFStream.WriteLine(aline); + } + MIFStream.WriteLine("DATA\n"); + + int totalRecords = 0; + + foreach(var shape in this) + { + totalRecords += 1; + switch (shape.Type) + { + case ShapeType.Point: + ESRIPoint shapePoint = shape as ESRIPoint; + MIFStream.WriteLine("Point {0} {1}", shapePoint.Point.X, shapePoint.Point.Y); + break; + + case ShapeType.PolyLine: + ESRIPolyLine shapePolyLine = shape as ESRIPolyLine; + // TODO; + break; + + case ShapeType.Polygon: + ESRIPolygon shapePolygon = shape as ESRIPolygon; + MIFStream.WriteLine("Region {0}", shapePolygon.Parts.Count); + foreach(PointD[] part in shapePolygon.Parts) + { + MIFStream.WriteLine("{0}", part.Length); + foreach(PointD point in part) + { + MIFStream.WriteLine("{0} {1}", point.X, point.Y); + } + } + break; + + default: + break; + } + } + + for(int i = 0; i < totalRecords; i++) + { + var row = table.Rows[i]; + bool isFirst = true; + foreach(DataColumn column in table.Columns) + { + if(isFirst) + { + isFirst = false; + MIDStream.Write("{0}", row[column].ToString().Trim()); + } + else + { + MIDStream.Write(",{0}", row[column].ToString().Trim()); + } + } + MIDStream.Write("\r\n"); // 每行末尾输出行结束标记 + } + + MIFStream.Close(); + MIDStream.Close(); + } + public string ConnectionStringTemplate { get { return connectionStringTemplate_; } @@ -261,7 +362,9 @@ namespace Shapefile opened_ = false; } } + #endregion + #region IEnumerable Members public IEnumerator GetEnumerator() { @@ -269,9 +372,7 @@ namespace Shapefile indexStream_, count_); } - #endregion - #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { -- Gitee From 04a5a71d949add4ba6cd35d1cdf9b02e01df4a6a Mon Sep 17 00:00:00 2001 From: notplus Date: Fri, 6 Nov 2020 00:25:36 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=90=84=E7=B1=BB?= =?UTF-8?q?=E5=9B=BE=E5=BD=A2=E7=BB=98=E5=88=B6=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShapeFileViewer/MainForm.cs | 106 ++++++++++++++++++++++++++++++++++-- Shapefile/ESRIPoint.cs | 9 +++ Shapefile/ESRIPolyLine.cs | 25 +++++++++ Shapefile/ESRIPolygon.cs | 27 +++++++++ Shapefile/ESRIShape.cs | 7 +++ Shapefile/ShapeFile.cs | 2 +- Shapefile/Shapefile.csproj | 1 + 7 files changed, 172 insertions(+), 5 deletions(-) diff --git a/ShapeFileViewer/MainForm.cs b/ShapeFileViewer/MainForm.cs index 12b7414..9589ec0 100644 --- a/ShapeFileViewer/MainForm.cs +++ b/ShapeFileViewer/MainForm.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Data.SqlTypes; using System.Diagnostics; using System.Drawing; using System.IO; @@ -18,6 +19,8 @@ namespace ShapeFileViewer { // 用于管理打开的多个Shape文件 List shpList = new List(); + System.Drawing.Drawing2D.Matrix transform = new System.Drawing.Drawing2D.Matrix(); + Point mouse_pos = new Point(); public MainForm() { @@ -32,12 +35,19 @@ namespace ShapeFileViewer PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); pi.SetValue(dbfdataGridView, true, null); + this.DrawPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPanel_Paint); + this.DrawPanel.MouseClick += new MouseEventHandler(DrawPanel_MouseClick); + this.DrawPanel.MouseMove += new MouseEventHandler(DrawPanel_MouseMove); + this.layerManager.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.layerManager_AfterCheck); + this.MouseWheel += new MouseEventHandler(MainForm_MouseWheel); + + SetStyle(ControlStyles.UserPaint, true); + SetStyle(ControlStyles.OptimizedDoubleBuffer, true); } private void MainForm_Load(object sender, EventArgs e) { - this.DrawPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPanel_Paint); - this.layerManager.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.layerManager_AfterCheck); + } private void 打开Shape文件ToolStripMenuItem_Click(object sender, EventArgs e) @@ -77,6 +87,30 @@ namespace ShapeFileViewer if (Path.GetExtension(filepath) != ".shp") return; ShapeFile shapefile = new ShapeFile(filepath); + if (shpList.Count == 0) // 初始缩放 + { + float w = DrawPanel.Width; + float h = DrawPanel.Height; + float data_width = Convert.ToSingle(shapefile.BoundingBox.Right - shapefile.BoundingBox.Left); + float data_height = Convert.ToSingle(shapefile.BoundingBox.Top - shapefile.BoundingBox.Bottom); + float sx = w / (data_width * 1.02f); + float sy = h / (data_height * 1.02f); + float dx = 0.0f; + float dy = 0.0f; + if (sx > sy) + { + sx = sy; + dx = (data_width - w / sx) / 2.0f; // 调整横向比例,横向居中 + } + else + { + sy = sx; + dy = (data_height - h / sy) / 2.0f; // 调整纵向比例,纵向居中 + } + transform.Scale(sx, -sy); + transform.Translate(Convert.ToSingle(-shapefile.BoundingBox.Left) + data_width * 0.01f - dx, + Convert.ToSingle(-shapefile.BoundingBox.Top) - data_height * 0.01f + dy); + } shpList.Add(shapefile); shapefile.IsRender = true; AddLayer(shapefile.FileName); @@ -85,13 +119,14 @@ namespace ShapeFileViewer dbfdataGridView.DataSource = shapefile.DataSet.Tables[0]; } - private void AddLayer(String layerName) + private void AddLayer(string layerName) { layerManager.BeginUpdate(); TreeNode treenode = new TreeNode(layerName); treenode.Checked = true; layerManager.Nodes.Add(treenode); layerManager.EndUpdate(); + } private void layerManager_AfterCheck(object sender, TreeViewEventArgs e) @@ -103,9 +138,72 @@ namespace ShapeFileViewer } } - private void DrawPanel_Paint(object sender, EventArgs e) + private void DrawPanel_Paint(object sender, PaintEventArgs e) { + if (shpList.Count <= 0) return; // 在没有读入数据时,不需要绘制图形 + + Graphics g = e.Graphics; + g.Clear(Color.White); + g.Transform = transform; + + for (int i=0;i0) + { + if (e.Delta > 0) + { + transform.Scale(e.Delta / 100f, e.Delta / 100f); + DrawPanel.Refresh(); + } + else + { + transform.Scale(-100f / e.Delta, -100f / e.Delta); + DrawPanel.Refresh(); + } + } + } + + private void DrawPanel_MouseMove(object sender, MouseEventArgs e) + { + //if (shpList.Count!=0) + //{ + // if (e.Button == MouseButtons.Left) + // { + // float dx = e.X - mouse_pos.X; + // float dy = e.Y - mouse_pos.Y; + // transform.Translate(dx, dy); + // DrawPanel.Refresh(); + // mouse_pos = new Point(e.X, e.Y); + // this.Cursor = Cursors.Default; + // } + //} + + } + private void DrawPanel_MouseClick(object sender, MouseEventArgs e) + { + //if (shpList.Count!=0) + //{ + // if (e.Button == MouseButtons.Left) + // { + // this.Cursor = Cursors.Hand; + // mouse_pos = new Point(e.X, e.Y); + // } + // mouse_pos = new Point(e.X, e.Y); + //} + + } + + } } diff --git a/Shapefile/ESRIPoint.cs b/Shapefile/ESRIPoint.cs index 717ba0e..3c66857 100644 --- a/Shapefile/ESRIPoint.cs +++ b/Shapefile/ESRIPoint.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Specialized; using System.Data; +using System.Drawing; namespace Shapefile { @@ -37,5 +38,13 @@ namespace Shapefile { get { return point_; } } + + public override void Render(Graphics g) + { + float sx = g.Transform.Elements[0]; + float sy = g.Transform.Elements[3]; + Brush brush = new SolidBrush(Color.Red); + g.FillEllipse(brush, Convert.ToSingle(point_.X), Convert.ToSingle(point_.Y), sx/20, -sy/20); + } } } diff --git a/Shapefile/ESRIPolyLine.cs b/Shapefile/ESRIPolyLine.cs index c43ad04..541f214 100644 --- a/Shapefile/ESRIPolyLine.cs +++ b/Shapefile/ESRIPolyLine.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Data; using System.Text; +using System.Drawing; +using System.Drawing.Text; +using System.Drawing.Drawing2D; namespace Shapefile { @@ -30,5 +33,27 @@ namespace Shapefile { get { return parts_; } } + + public override void Render(Graphics g) + { + float sx = g.Transform.Elements[0]; + float sy = g.Transform.Elements[3]; + float pen_width = 1.0f / (sx - sy) * 2; + Pen pen = new Pen(Color.Blue, pen_width); + + for (int i = 0; i < parts_.Count; i++) + { + GraphicsPath path = new GraphicsPath(); + PointF[] temp = new PointF[parts_[i].Length]; + for (int j = 0; j < parts_[i].Length; j++) + { + temp[j].X = Convert.ToSingle(parts_[i][j].X); + temp[j].Y = Convert.ToSingle(parts_[i][j].Y); + } + path.FillMode = FillMode.Alternate; + path.AddLines(temp); + g.DrawPath(pen, path); + } + } } } diff --git a/Shapefile/ESRIPolygon.cs b/Shapefile/ESRIPolygon.cs index 1165f63..50963a5 100644 --- a/Shapefile/ESRIPolygon.cs +++ b/Shapefile/ESRIPolygon.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Data; using System.Text; +using System.Drawing; +using System.Linq; +using System.Drawing.Drawing2D; namespace Shapefile { @@ -26,5 +29,29 @@ namespace Shapefile { get { return parts_; } } + + public override void Render(Graphics g) + { + float sx = g.Transform.Elements[0]; + float sy = g.Transform.Elements[3]; + float pen_width = 1.0f / (sx - sy) * 2; + Pen pen = new Pen(Color.Blue, pen_width); + Brush brush = new SolidBrush(Color.AliceBlue); + for (int i=0;i + -- Gitee From a05ed1f6cac8bf9a74d201d403c1755f3937a2cf Mon Sep 17 00:00:00 2001 From: notplus Date: Fri, 6 Nov 2020 10:51:20 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E6=BB=9A=E8=BD=AE=E3=80=81=E6=8B=96=E6=8B=BD=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?,=E5=A2=9E=E5=8A=A0=E5=9D=90=E6=A0=87=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShapeFileViewer/MainForm.cs | 172 ++++++++++++++++++++++-------------- Shapefile/ESRIPoint.cs | 2 +- Shapefile/ESRIPolygon.cs | 3 +- 3 files changed, 111 insertions(+), 66 deletions(-) diff --git a/ShapeFileViewer/MainForm.cs b/ShapeFileViewer/MainForm.cs index d218f1a..01b4a41 100644 --- a/ShapeFileViewer/MainForm.cs +++ b/ShapeFileViewer/MainForm.cs @@ -6,6 +6,7 @@ using System.Data; using System.Data.SqlTypes; using System.Diagnostics; using System.Drawing; +using System.Drawing.Drawing2D; using System.IO; using System.Linq; using System.Reflection; @@ -20,7 +21,7 @@ namespace ShapeFileViewer // 用于管理打开的多个Shape文件 List shpList = new List(); System.Drawing.Drawing2D.Matrix transform = new System.Drawing.Drawing2D.Matrix(); - Point mouse_pos = new Point(); + PointF mouse_pos = new PointF(); public MainForm() { @@ -38,9 +39,13 @@ namespace ShapeFileViewer this.DrawPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPanel_Paint); this.DrawPanel.MouseClick += new MouseEventHandler(DrawPanel_MouseClick); this.DrawPanel.MouseMove += new MouseEventHandler(DrawPanel_MouseMove); + this.DrawPanel.MouseUp += new MouseEventHandler(DrawPanel_MouseUp); + this.DrawPanel.MouseDoubleClick += new MouseEventHandler(DrawPanel_MouseDoubleClick); + this.layerManager.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.layerManager_AfterCheck); - this.MouseWheel += new MouseEventHandler(MainForm_MouseWheel); - + + this.DrawPanel.MouseWheel += new MouseEventHandler(DrawPanel_MouseWheel); + SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); } @@ -87,31 +92,8 @@ namespace ShapeFileViewer if (Path.GetExtension(filepath) != ".shp") return; ShapeFile shapefile = new ShapeFile(filepath); - if (shpList.Count == 0) // 初始缩放 - { - float w = DrawPanel.Width; - float h = DrawPanel.Height; - float data_width = Convert.ToSingle(shapefile.BoundingBox.Right - shapefile.BoundingBox.Left); - float data_height = Convert.ToSingle(shapefile.BoundingBox.Top - shapefile.BoundingBox.Bottom); - float sx = w / (data_width * 1.02f); - float sy = h / (data_height * 1.02f); - float dx = 0.0f; - float dy = 0.0f; - if (sx > sy) - { - sx = sy; - dx = (data_width - w / sx) / 2.0f; // 调整横向比例,横向居中 - } - else - { - sy = sx; - dy = (data_height - h / sy) / 2.0f; // 调整纵向比例,纵向居中 - } - transform.Scale(sx, -sy); - transform.Translate(Convert.ToSingle(-shapefile.BoundingBox.Left) + data_width * 0.01f - dx, - Convert.ToSingle(-shapefile.BoundingBox.Top) - data_height * 0.01f + dy); - } shpList.Add(shapefile); + InitScale(); shapefile.IsRender = true; AddLayer(shapefile.FileName); DrawPanel.Refresh(); @@ -126,7 +108,7 @@ namespace ShapeFileViewer treenode.Checked = true; layerManager.Nodes.Add(treenode); layerManager.EndUpdate(); - + } private void layerManager_AfterCheck(object sender, TreeViewEventArgs e) @@ -140,20 +122,17 @@ namespace ShapeFileViewer private void DrawPanel_Paint(object sender, PaintEventArgs e) { - if (shpList.Count <= 0) return; // 在没有读入数据时,不需要绘制图形 Graphics g = e.Graphics; g.Clear(Color.White); g.Transform = transform; - - for (int i=0;i0) + if (shpList.Count > 0) { + PointF now_pos = new PointF(e.X, e.Y); + PointF[] pos = new PointF[1]; + pos[0] = now_pos; + var trans_inv = transform.Clone(); + trans_inv.Invert(); + trans_inv.TransformPoints(pos); if (e.Delta > 0) - { transform.Scale(e.Delta / 100f, e.Delta / 100f); - DrawPanel.Refresh(); - } else - { transform.Scale(-100f / e.Delta, -100f / e.Delta); - DrawPanel.Refresh(); - } + PointF[] pos_scale = new PointF[1]; + pos_scale[0] = now_pos; + trans_inv = transform.Clone(); + trans_inv.Invert(); + trans_inv.TransformPoints(pos_scale); + float dx = pos_scale[0].X - pos[0].X; + float dy = pos_scale[0].Y - pos[0].Y; + transform.Translate(dx, dy); + DrawPanel.Refresh(); } } private void DrawPanel_MouseMove(object sender, MouseEventArgs e) { - //if (shpList.Count!=0) - //{ - // if (e.Button == MouseButtons.Left) - // { - // float dx = e.X - mouse_pos.X; - // float dy = e.Y - mouse_pos.Y; - // transform.Translate(dx, dy); - // DrawPanel.Refresh(); - // mouse_pos = new Point(e.X, e.Y); - // this.Cursor = Cursors.Default; - // } - //} - + if (shpList.Count != 0) + { + PointF now_pos = new PointF(e.X, e.Y); + PointF[] pos_coord = new PointF[1]; + pos_coord[0] = now_pos; + if (e.Button == MouseButtons.Left) + { + this.Cursor = Cursors.Hand; + PointF[] pos = new PointF[2]; + pos[0] = mouse_pos; + pos[1] = now_pos; + var trans_inv = transform.Clone(); + trans_inv.Invert(); + trans_inv.TransformPoints(pos); + float dx = pos[1].X - pos[0].X; + float dy = pos[1].Y - pos[0].Y; + transform.Translate(dx, dy); + DrawPanel.Refresh(); + } + var trans_inv1 = transform.Clone(); + trans_inv1.Invert(); + trans_inv1.TransformPoints(pos_coord); + coorStatusLabel.Text = "当前X、Y坐标:" + pos_coord[0].X + ", " + pos_coord[0].Y; + } + mouse_pos = new PointF(e.X, e.Y); } private void DrawPanel_MouseClick(object sender, MouseEventArgs e) { - //if (shpList.Count!=0) - //{ - // if (e.Button == MouseButtons.Left) - // { - // this.Cursor = Cursors.Hand; - // mouse_pos = new Point(e.X, e.Y); - // } - // mouse_pos = new Point(e.X, e.Y); - //} } + private void DrawPanel_MouseUp(object sender, MouseEventArgs e) + { + this.Cursor = Cursors.Default; + } + + private void DrawPanel_MouseDoubleClick(object sender, MouseEventArgs e) + { + InitScale(); + DrawPanel.Refresh(); + } + + private void InitScale() + { + float w = DrawPanel.Width; + float h = DrawPanel.Height; + float max_left = Convert.ToSingle(shpList[0].BoundingBox.Left); + float max_right= Convert.ToSingle(shpList[0].BoundingBox.Right); + float max_top = Convert.ToSingle(shpList[0].BoundingBox.Top); + float max_bottom= Convert.ToSingle(shpList[0].BoundingBox.Bottom); + for (int i = 1; i < shpList.Count; i++) + { + if (shpList[i].BoundingBox.Left < max_left) + max_left = Convert.ToSingle(shpList[i].BoundingBox.Left); + if (shpList[i].BoundingBox.Right > max_right) + max_right = Convert.ToSingle(shpList[i].BoundingBox.Right); + if (shpList[i].BoundingBox.Bottom < max_bottom) + max_bottom = Convert.ToSingle(shpList[i].BoundingBox.Bottom); + if (shpList[i].BoundingBox.Top > max_top) + max_top = Convert.ToSingle(shpList[i].BoundingBox.Top); + } + float data_width = max_right - max_left; + float data_height = max_top - max_bottom; + float sx = w / (data_width * 1.02f); + float sy = h / (data_height * 1.02f); + float dx = 0.0f; + float dy = 0.0f; + if (sx > sy) + { + sx = sy; + dx = (data_width - w / sx) / 2.0f; // 调整横向比例,横向居中 + } + else + { + sy = sx; + dy = (data_height - h / sy) / 2.0f; // 调整纵向比例,纵向居中 + } + Matrix new_trans = new Matrix(); + + new_trans.Scale(sx, -sy); + new_trans.Translate(-max_left + data_width * 0.01f - dx, + -max_top - data_height * 0.01f + dy); + transform = new_trans; + } } } diff --git a/Shapefile/ESRIPoint.cs b/Shapefile/ESRIPoint.cs index 3c66857..a772a0d 100644 --- a/Shapefile/ESRIPoint.cs +++ b/Shapefile/ESRIPoint.cs @@ -44,7 +44,7 @@ namespace Shapefile float sx = g.Transform.Elements[0]; float sy = g.Transform.Elements[3]; Brush brush = new SolidBrush(Color.Red); - g.FillEllipse(brush, Convert.ToSingle(point_.X), Convert.ToSingle(point_.Y), sx/20, -sy/20); + g.FillEllipse(brush, Convert.ToSingle(point_.X), Convert.ToSingle(point_.Y), 5/sx, -5/sy); } } } diff --git a/Shapefile/ESRIPolygon.cs b/Shapefile/ESRIPolygon.cs index 50963a5..08c2eaf 100644 --- a/Shapefile/ESRIPolygon.cs +++ b/Shapefile/ESRIPolygon.cs @@ -48,8 +48,9 @@ namespace Shapefile } path.AddPolygon(temp); - g.DrawPath(pen,path); g.FillPath(brush, path); + g.DrawPath(pen,path); + } } -- Gitee