Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
GetTrueColorValue Method
See Also  Example
Leadtools Namespace > RasterImage Class : GetTrueColorValue Method



color
a RasterColor that specifies the source color
Gets the true (RGB) value of the specified color based on the current image palette.

Syntax

Visual Basic (Declaration) 
Public Function GetTrueColorValue( _
   ByVal color As RasterColor _
) As RasterColor
Visual Basic (Usage)Copy Code
Dim instance As RasterImage
Dim color As RasterColor
Dim value As RasterColor
 
value = instance.GetTrueColorValue(color)
C# 
public RasterColor GetTrueColorValue( 
   RasterColor color
)
C++/CLI 
public:
RasterColor GetTrueColorValue( 
   RasterColor color
) 

Parameters

color
a RasterColor that specifies the source color

Return Value

A RasterColor that is guaranteed to be a true color (has RGB value)

Example

This example will create transparent GIF file

Visual BasicCopy Code
Public Sub CreateTransparentGifExample()
   ' Create a 24 bpp image, we will draw on it first then convert it to 8 bpp
   Dim imageWidth As Integer = 256
   Dim imageHeight As Integer = 256
   Dim image As New RasterImage( _
      RasterMemoryFlags.Conventional, _
      imageWidth, _
      imageHeight, _
      24, _
      RasterByteOrder.Bgr, _
      RasterViewPerspective.BottomLeft, _
      Nothing, _
      IntPtr.Zero, _
      0)
   ' Fill this image with magenta color and draw some random ellipses on top
   Dim hdc As IntPtr = image.CreateLeadDC()
   Dim g As Graphics = Graphics.FromHdc(hdc)

   g.FillRectangle(Brushes.Magenta, 0, 0, imageWidth, imageHeight)

   Const ellipseWidth As Integer = 40
   Const ellipseHeight As Integer = 40

   Dim r As New Random()

   For i As Integer = 0 To 39
      Dim x As Integer = r.Next(imageWidth - ellipseWidth)
      Dim y As Integer = r.Next(imageHeight - ellipseHeight)

      Dim clr As Color = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256))
      Dim brush As New SolidBrush(clr)
      g.FillEllipse(brush, x, y, ellipseWidth, ellipseHeight)
      brush.Dispose()
   Next

   g.Dispose()
   RasterImage.DeleteLeadDC(hdc)

   ' Convert this image to 8 bits/pixel
   Dim cmd As New ColorResolutionCommand( _
      ColorResolutionCommandMode.InPlace, _
      8, _
      RasterByteOrder.Rgb, _
      RasterDitheringMethod.None, _
      ColorResolutionCommandPaletteFlags.Optimized, _
      Nothing)
   cmd.Run(image)

   ' Find the Magenta color and set it as the transparent color
   Dim transparentColor As RasterColor = RasterColor.FromGdiPlusColor(Color.Magenta)

   ' Get the true color used for Magenta inside this image (a palette index)
   transparentColor = image.TranslateColor(image, transparentColor)

   image.Transparent = True
   image.TransparentColor = transparentColor

   ' Initialize the RasterCodecs object
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()

   ' Save this image as GIF
   Dim fileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "TransparentEllipses.gif"
   codecs.Save(image, fileName, RasterImageFormat.Gif, 8)

   ' Clean up
   image.Dispose()
   codecs.Dispose()
   RasterCodecs.Shutdown()
End Sub
C#Copy Code
public void CreateTransparentGifExample() 

   // Create a 24 bpp image, we will draw on it first then convert it to 8 bpp 
   int imageWidth = 256; 
   int imageHeight = 256; 
   RasterImage image = new RasterImage( 
      RasterMemoryFlags.Conventional, 
      imageWidth, 
      imageHeight, 
      24, 
      RasterByteOrder.Bgr, 
      RasterViewPerspective.BottomLeft, 
      null, 
      IntPtr.Zero, 
      0); 
 
   // Fill this image with magenta color and draw some random ellipses on top 
   IntPtr hdc = image.CreateLeadDC(); 
   Graphics g = Graphics.FromHdc(hdc); 
 
   g.FillRectangle(Brushes.Magenta, 0, 0, imageWidth, imageHeight); 
 
   const int ellipseWidth = 40; 
   const int ellipseHeight = 40; 
 
   Random r = new Random(); 
 
   for(int i = 0; i < 40; i++) 
   { 
      int x = r.Next(imageWidth - ellipseWidth); 
      int y = r.Next(imageHeight - ellipseHeight); 
 
      Color clr = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256)); 
      Brush brush = new SolidBrush(clr); 
      g.FillEllipse(brush, x, y, ellipseWidth, ellipseHeight); 
      brush.Dispose(); 
   } 
 
   g.Dispose(); 
   RasterImage.DeleteLeadDC(hdc); 
 
   // Convert this image to 8 bits/pixel 
   ColorResolutionCommand cmd = new ColorResolutionCommand( 
      ColorResolutionCommandMode.InPlace, 
      8, 
      RasterByteOrder.Rgb, 
      RasterDitheringMethod.None, 
      ColorResolutionCommandPaletteFlags.Optimized, 
      null); 
   cmd.Run(image); 
 
   // Find the Magenta color and set it as the transparent color 
   RasterColor transparentColor = RasterColor.FromGdiPlusColor(Color.Magenta); 
 
   // Get the true color used for Magenta inside this image (a palette index) 
   transparentColor = image.TranslateColor(image, transparentColor); 
 
   image.Transparent = true; 
   image.TransparentColor = transparentColor; 
 
   // Initialize the RasterCodecs object 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Save this image as GIF 
   string fileName = LeadtoolsExamples.Common.ImagesPath.Path + "TransparentEllipses.gif"; 
   codecs.Save(image, fileName, RasterImageFormat.Gif, 8); 
 
   // Clean up 
   image.Dispose(); 
   codecs.Dispose(); 
   RasterCodecs.Shutdown(); 
}

Remarks

Use this method to translate a color that is really a palette index (the value of the RasterColor.IsPaletteIndex property is true) to a true RGB color value

The apposite of this method is TranslateColor.

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also