基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本
繼續(xù)對MapWinGis進行研究探索,緊接上一篇文章。MapWinGis自身有很多功能,此篇主要也是基于其內(nèi)在方法來寫的。除了第二點顯示文本是根據(jù)其源代碼進行擴展的。
原圖:
一、改善縮放功能
上一版本放大縮小都必須點擊下工具欄的放大、縮小。是鼠標(biāo)處于縮放狀態(tài),此時必須單擊鼠標(biāo)左右鍵才能縮放。現(xiàn)在采用滾輪滾動時候就能縮放,操作比較方便。其實只需加載一個鼠標(biāo)滾輪事件,在其設(shè)置即可。
??????? private void AddLayer()
??????? {
??????????? this.MouseWheel+=new MouseEventHandler(Map_MouseWheel);
??????? }
??????? private void Form1_FormClosing(object sender, FormClosingEventArgs e)
??????? {//滾輪縮放事件釋放
??????????? this.MouseWheel -= new MouseEventHandler(Map_MouseWheel);
??????? }
??????? private void Map_MouseWheel(object sender, MouseEventArgs e)
??????? {
??????????? bool result = axMap1.Focus();
??????????? if (result)
??????????? {
??????????????? axMap1.ZoomIn(0.0005 * e.Delta);
??????????? }
??????????? axMap1.set_ShapePointType(layerHandle2, 0, MapWinGIS.tkPointType.ptImageList);
??????? }
滾輪縮放圖:
二、渲染各種圖層
現(xiàn)在就針對加載的兩個圖層進行渲染,一個點圖層(各省市),一個面圖層(中國)。填充顏色、設(shè)置邊框、點大小即可。橙色圖層整個中國,藍色為邊框,紅色為各省市。?
??????? //渲染
??????? private void btnRender_Click(object sender, EventArgs e)
??????? {
??????????? axMap1.set_ShapeLayerDrawFill(layerHandle1, true);
??????????? fillcolor = (uint)ColorTranslator.ToOle(Color.Orange);
??????????? linecolor = (uint)ColorTranslator.ToOle(Color.Blue);
??????????? linewidth = 2.0F;
??????????? //圖層一(面)填充顏色、邊框線顏色、線寬
??????????? axMap1.set_ShapeLayerFillColor(layerHandle1, fillcolor);
??????????? axMap1.set_ShapeLayerLineColor(layerHandle1, linecolor);
??????????? axMap1.set_ShapeLayerLineWidth(layerHandle1, linewidth);
??????????? //圖層二(點)點的顏色、大小
??????????? axMap1.set_ShapeLayerPointColor(layerHandle2, pointcolor);
??????????? axMap1.set_ShapeLayerPointSize(layerHandle2, pointsize);
??????? }
渲染后的圖:
三、顯示文本
MapWinGis的一大缺點就是只支持點、線、面圖層,無法自行設(shè)置添加文本圖層這個SuperMap比較起來還是存在著很大的缺陷,這時地圖上的信息就沒法豐富了。可以自行往它所在的dbf文件內(nèi)添加列。講信息存放在這里,然后就可讀取設(shè)置每個圖層所要顯示的Lable。這樣就可以一定程度上解決文本的顯示功能、豐富地圖信息。該文本也支持放大縮小。
??????? //設(shè)置文本(具體下次再說里面的代碼,根據(jù)MapWinGis VB源代碼擴展的)
??????? private void btnShowLable_Click(object sender, EventArgs e)
??????? {
??????????? ShowLable.GetLable(shpFile2, layerHandle2, axMap1);
??????? }
顯示文本圖:
四、為點圖層設(shè)置圖片
點圖層的每個Shape元素,默認的都是一個圓圈,大小可自行設(shè)置。此時可以通過設(shè)置點的類型豐富地圖。該圖片可自行添加,支持多種格式的圖片,缺點在于改圖片不支持放大縮小。后期將會針對這一缺點進行改進。使其支持矢量式的放大、縮小。
??????? private void btnSetImage_Click(object sender, EventArgs e)
??????? {//設(shè)置點類型
??????????? MapWinGIS.Image image = new MapWinGIS.Image();
??????????? string fileName=Application.StartupPath + @"\MapIcon\City2.png";
??????????? image.Open(fileName, MapWinGIS.ImageType.PNG_FILE, false, null);
??????????? image.TransparencyColor = (uint)ColorTranslator.ToOle(Color.White);
??????????? image.UseTransparencyColor = true;
??????????? axMap1.set_ShapeLayerPointType(layerHandle2, tkPointType.ptUserDefined);
??????????? axMap1.set_UDPointType(layerHandle2, image);
??????? }
設(shè)置圖片后的圖:
希望各位大俠多多指導(dǎo),歡迎拍磚。我講繼續(xù)努力,下回繼續(xù)探索總結(jié)MapWinGis……
轉(zhuǎn)載于:https://www.cnblogs.com/wakerobin/archive/2009/09/19/1570196.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java初学必看
- 下一篇: hashtable与HashMap区别