FAQ
ArcObjects でのピクチャ マーカー シンボルの作成方法

ナレッジ番号:5293 | 登録日:2023/07/26 | 更新日:2023/12/28

概要

ピクチャ マーカー シンボルは、シンボルの元になる絵柄として BMP ファイルまたは EMF ファイルのいずれかを使用して作成することができます。以下のコードは入力として両方の型のファイルを利用したサンプル コードです。適切なファイルを示すように、入力パスを変更して利用してください。

Image

サンプル コード

//透過色を設定。ここでは白とする。
IRgbColor rgbColorCls = new RgbColorClass();
rgbColorCls.Red = 255;
rgbColorCls.Green = 255;
rgbColorCls.Blue = 255;

//ビットマップからピクチャマーカーシンボルを作成。
IPictureMarkerSymbol pPicMarkerSymbolCls = new PictureMarkerSymbolClass();
pPicMarkerSymbolCls.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, "c:\\temp\\mypictk.bmp");
//Emfの場合。
//PicMarkerSymbolCls.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureEMF, "c:\\temp\\mypict.emf");

//シンボルの回転角度(0)を設定。
pPicMarkerSymbolCls.Angle = 0;

//白の部分を透明にする。      
pPicMarkerSymbolCls.BitmapTransparencyColor = rgbColorCls;

//サイズを指定する。
pPicMarkerSymbolCls.Size = 18;
pPicMarkerSymbolCls.XOffset = 0;
pPicMarkerSymbolCls.YOffset = 0;

//最上位のポイント レイヤーにシンボルを割り当てる。
IGeoFeatureLayer pGeoLayer = (IGeoFeatureLayer)ArcMap.Document.FocusMap.get_Layer(0);
IFeatureRenderer pFeatureRenderer = pGeoLayer.Renderer;
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = (ISymbol)pPicMarkerSymbolCls;
pGeoLayer.Renderer = (IFeatureRenderer)pSimpleRenderer;
ArcMap.Document.UpdateContents();
ArcMap.Document.ActiveView.Refresh();
'透過色を設定。ここでは白とする。
Dim rgbColorCls As IRgbColor = New RgbColorClass()
rgbColorCls.Red = 255
rgbColorCls.Green = 255
rgbColorCls.Blue = 255

'ビットマップからピクチャマーカーシンボルを作成。
Dim pPicMarkerSymbolCls As IPictureMarkerSymbol = New PictureMarkerSymbolClass()
pPicMarkerSymbolCls.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, "c:\temp\mypictk.bmp")
'Emfの場合。
'PicMarkerSymbolCls.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureEMF, "c:\temp\mypict.emf");

'シンボルの回転角度(0)を設定。
pPicMarkerSymbolCls.Angle = 0

'白の部分を透明にする。
pPicMarkerSymbolCls.BitmapTransparencyColor = rgbColorCls

'サイズを指定する。
pPicMarkerSymbolCls.Size = 18
pPicMarkerSymbolCls.XOffset = 0
pPicMarkerSymbolCls.YOffset = 0

'最上位のポイント レイヤーにシンボルを割り当てる。
Dim pGeoLayer As IGeoFeatureLayer = CType(My.ArcMap.Document.FocusMap.Layer(0), IGeoFeatureLayer)
Dim pFeatureRenderer As IFeatureRenderer = pGeoLayer.Renderer
Dim pSimpleRenderer As ISimpleRenderer = New SimpleRendererClass()
pSimpleRenderer.Symbol = CType(pPicMarkerSymbolCls, ISymbol)
pGeoLayer.Renderer = CType(pSimpleRenderer, IFeatureRenderer)
My.ArcMap.Document.UpdateContents()
My.ArcMap.Document.ActiveView.Refresh()

補足情報

メタデータ

種類

製品