About the Create a custom default raster renderer Sample
[C#]
RasterRendererMaker_1bit_TIFF_VBNET.cs
[Visual Basic .NET]
RasterRendererMaker_1bit_TIFF_VBNET.vb
' IMPORTANT INFORMATION: ' ====================== ' This project already has the COM Component Category Registration information embedded. If you build this project it will ' overwrite ArcMap's default behavior for rendering of 1bit TIFF images. Since this project alters the default behavior it ' may be desirable to remove this projects functionality from the system to restore the default image rendering capabilities. ' This can be accomplished by: ' 1. Open a Visual Studio 2008 Command Prompt and navigate to the location of this projects .dll that gets created (for ' example: C:\temp\RasterRendererMaker_1bit_TIFF_VBNET\bin\Debug) ' 2. Use the esriregasm.exe utility from the Program Files\Common Files\ArcGIS\bin to unregister the DLL. Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.ADF.CATIDs Imports System.Runtime.InteropServices Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.DataSourcesRaster Imports ESRI.ArcGIS.Display Imports ESRI.ArcGIS.Geodatabase <ComClass(RasterRenderMaker_1bit_TIFF_VBNET.ClassId, RasterRenderMaker_1bit_TIFF_VBNET.InterfaceId, RasterRenderMaker_1bit_TIFF_VBNET.EventsId), _ ProgId("RasterRendererMaker_1bit_TIFF_VBNET.RasterRenderMaker_1bit_TIFF_VBNET")> _ Public Class RasterRenderMaker_1bit_TIFF_VBNET Implements IRasterRendererMaker #Region "COM Registration Function(s)" <ComRegisterFunction(), ComVisibleAttribute(False)> _ Public Shared Sub RegisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration(registerType) 'Add any COM registration code after the ArcGISCategoryRegistration() call End Sub <ComUnregisterFunction(), ComVisibleAttribute(False)> _ Public Shared Sub UnregisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration(registerType) 'Add any COM unregistration code after the ArcGISCategoryUnregistration() call End Sub #Region "ArcGIS Component Category Registrar generated code" ''' <summary> ''' Required method for ArcGIS Component Category registration - ''' Do not modify the contents of this method with the code editor. ''' </summary> Private Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) RasterRendererMakers.Register(regKey) End Sub ''' <summary> ''' Required method for ArcGIS Component Category unregistration - ''' Do not modify the contents of this method with the code editor. ''' </summary> Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) RasterRendererMakers.Unregister(regKey) End Sub #End Region #End Region #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. If you change them, existing ' clients will no longer be able to access the class. Public Const ClassId As String = "ca7cea8d-e4b7-43cc-851b-c2b120c2fb57" Public Const InterfaceId As String = "a2246ac9-db33-4677-b9a8-24729374dfa6" Public Const EventsId As String = "37166b0a-a607-499c-824f-45cd09868df6" #End Region ' A creatable COM class must have a Public Sub New() ' with no parameters, otherwise, the class will not be ' registered in the COM registry and cannot be created ' via CreateObject. Public Sub New() MyBase.New() End Sub Public Function CreateDefaultRasterRenderer(ByVal pRaster As ESRI.ArcGIS.Geodatabase.IRaster) As ESRI.ArcGIS.Carto.IRasterRenderer Implements ESRI.ArcGIS.Carto.IRasterRendererMaker.CreateDefaultRasterRenderer 'Get raster dataset Dim rasterBandCollection As IRasterBandCollection = CType(pRaster, IRasterBandCollection) Dim rasterBand As IRasterBand = rasterBandCollection.Item(0) Dim rasterDataset As IRasterDataset = CType(rasterBand, IRasterDataset) 'Check for TIFF format Dim format_Renamed As String = rasterDataset.Format If Left(format_Renamed, 4) <> "TIFF" Then Return Nothing End If 'check for bit depth Dim rasterProps As IRasterProps = CType(rasterBand, IRasterProps) If rasterProps.PixelType <> rstPixelType.PT_U1 Then Return Nothing End If 'create renderer for 1 bit raster 'Create a unique value renderer and associate it with raster Dim rasterUniqueValueRenderer As IRasterUniqueValueRenderer = New RasterUniqueValueRendererClass Dim rasterRenderer As IRasterRenderer = CType(rasterUniqueValueRenderer, IRasterRenderer) rasterRenderer.Raster = pRaster rasterRenderer.Update() 'Define the renderer rasterUniqueValueRenderer.HeadingCount = 1 rasterUniqueValueRenderer.Heading(0) = "" rasterUniqueValueRenderer.ClassCount(0) = 2 rasterUniqueValueRenderer.Field = "VALUE" rasterUniqueValueRenderer.AddValue(0, 0, 0) rasterUniqueValueRenderer.AddValue(0, 1, 1) rasterUniqueValueRenderer.Label(0, 0) = "0" rasterUniqueValueRenderer.Label(0, 1) = "1" ' Define symbology for rendering value 0 Dim color1 As IColor = CType(CreateRGBColor(200, 50, 0), IColor) 'Brown color Dim simpleFillSymbol1 As ISimpleFillSymbol = New SimpleFillSymbolClass simpleFillSymbol1.Color = color1 rasterUniqueValueRenderer.Symbol(0, 0) = CType(simpleFillSymbol1, ISymbol) Dim color2 As IColor = New RgbColorClass color2.NullColor = True Dim simpleFillSymbol2 As ISimpleFillSymbol = New SimpleFillSymbolClass simpleFillSymbol2.Color = color2 rasterUniqueValueRenderer.Symbol(0, 1) = CType(simpleFillSymbol2, ISymbol) Return rasterRenderer End Function Public ReadOnly Property Priority() As Integer Implements ESRI.ArcGIS.Carto.IRasterRendererMaker.Priority Get 'Give it a higher priority, so this renderer will be used as default Return 99 End Get End Property #Region "Create RGBColor" '''<summary>Generate an RgbColor by specifying the amount of Red, Green and Blue.</summary> ''' '''<param name="myRed">A byte (0 to 255) used to represent the Red color. Example: 0</param> '''<param name="myGreen">A byte (0 to 255) used to represent the Green color. Example: 255</param> '''<param name="myBlue">A byte (0 to 255) used to represent the Blue color. Example: 123</param> ''' '''<returns>An IRgbColor interface</returns> ''' '''<remarks></remarks> Public Function CreateRGBColor(ByVal myRed As System.Byte, ByVal myGreen As System.Byte, ByVal myBlue As System.Byte) As IRgbColor Dim rgbColor As IRgbColor = New RgbColorClass With rgbColor .Red = CInt(myRed) .Green = CInt(myGreen) .Blue = CInt(myBlue) .UseWindowsDithering = True End With Return rgbColor End Function #End Region End Class