?? studylabeltheme.java
字號:
package secondstudy;
import com.mapinfo.mapj.MapJ;
import com.mapinfo.util.DoublePoint;
import com.mapinfo.util.DoubleRect;
import com.mapinfo.mapj.FeatureLayer;
import com.mapinfo.unit.LinearUnit;
import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;
import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;
import java.awt.Color;
import java.awt.Image;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import com.mapinfo.mapj.LabelProperties;
import com.mapinfo.graphics.Rendition;
import com.mapinfo.graphics.RenditionImpl;
import com.mapinfo.unit.Distance;
import com.mapinfo.mapj.BaseLabelProperties;
import com.mapinfo.labeltheme.OverrideLabelTheme;
import com.mapinfo.labeltheme.LabelThemeList;
public class StudyLabelTheme extends JFrame
{
private String mdfFilePath="e:\\MapInfo\\study\\mapmdf";
private String mdfFileName="administrative.mdf";
private String mapxtremeURL="http://901-32:8083/mapxtreme47/mapxtreme";
public StudyLabelTheme()
{
}
public void studyOverrideLabelTheme()
{
MapJ mapj=new MapJ();
DoublePoint centerPoint=new DoublePoint(108.9608,34.2729);
FeatureLayer featureLayer=null;
double width,height;
try
{
mapj.setCenter(centerPoint) ;
mapj.loadMapDefinition(mdfFilePath + "\\" + mdfFileName);
mapj.setDeviceBounds(new DoubleRect(0,0,800,600)) ;
LinearUnit unit=LinearUnit.kilometer ;
mapj.setDistanceUnits(unit) ;
//featureLayer=mapj.getLayers() .getLayer("administrative") ;
featureLayer=(FeatureLayer)mapj.getLayers().get(0) ;
DoubleRect rect=featureLayer.getBounds() ;
width=rect.xmax -rect.xmin;
height=rect.ymax -rect.ymin;
mapj.setBounds(new DoubleRect(centerPoint,width,height)) ;
//set label
// LabelProperties labelProperties=featureLayer.getLabelProperties() ;
LabelProperties labelProperties=new LabelProperties();
labelProperties.setLabelExpression("name") ;
Rendition rend=new RenditionImpl();
rend.setValue(Rendition.SYMBOL_MODE ,Rendition.SymbolMode.FONT );
rend.setValue(Rendition.FONT_FAMILY ,"仿宋體") ;
Distance distance=new Distance(1,LinearUnit.kilometer );
rend.setValue(Rendition.FONT_SIZE ,distance) ;
rend.setValue(Rendition.SYMBOL_FOREGROUND ,Color.red);
labelProperties.setRendition(rend) ;
OverrideLabelTheme labelTheme=new OverrideLabelTheme(labelProperties,"Iloveyou");//1
LabelThemeList labelThemeList=featureLayer.getLabelThemeList() ;//2
labelThemeList.add(labelTheme) ;//3
//除了用1,2,3這三條語句實現外,還可以用4,5這兩條語句實現,有一個相同的特點就是:如果這個變量的初始值的
//獲得是通過featureLayer.getXXX方法,那么就不用再用featureLayer.setXXX方法使其生效了,;如果變量的初始值
//是用new方法得到的,那么要想使標簽的設置生效就必須還用相關的featureLayer.setXXX方法
// BaseLabelProperties baseLabel=new BaseLabelProperties(labelProperties);//4
// featureLayer.setLabelProperties(baseLabel) ;//5
featureLayer.setAutoLabel(true) ;
//display
MapXtremeImageRenderer render=new MapXtremeImageRenderer(mapxtremeURL);
ImageRequestComposer imageRC=ImageRequestComposer.create(mapj,256,Color.white,"image/png") ;
render.render(imageRC) ;
// render.toFile("E:\\MapInfo\\study\\png\\overridelabeltheme.png") ;
Image image=render.toImage() ;
DrawImage drawImage=new DrawImage(image);
drawImage.repaint() ;
this.getContentPane() .add(drawImage,BorderLayout.CENTER );
this.setSize(800,600) ;
this.setVisible(true) ;
this.show() ;
}catch(java.io.IOException ioe)
{
System.out.println("get a "+ioe.getClass() +"\nwith message "+ioe.getMessage() ) ;
}catch(Exception e)
{
System.out.println("get a "+e.getClass() +"\nwith message "+e.getMessage() ) ;
}
}
public static void main(String[] args)
{
StudyLabelTheme slt=new StudyLabelTheme();
slt.studyOverrideLabelTheme() ;
}
public class DrawImage extends JPanel
{
private Image m_img;
public DrawImage(Image img)
{
m_img=img;
}
public void paint(Graphics g)
{
g.drawImage(m_img,0,0,this);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -