LEADTOOLS(Leadtoolsアセンブリ)

フレームを表示

GetTrueColorValueメソッド








ソースカラーを指定するRasterColor
現在のimageパレットに基づく指定されたカラーのtrue(RGB)値を取得します。
構文
public RasterColor GetTrueColorValue( 
   RasterColor color
)
'Declaration
 
Public Function GetTrueColorValue( _
   ByVal color As RasterColor _
) As RasterColor
'Usage
 
Dim instance As RasterImage
Dim color As RasterColor
Dim value As RasterColor
 
value = instance.GetTrueColorValue(color)
public RasterColor GetTrueColorValue( 
   RasterColor color
)
- (LTRasterColor *)getTrueColorValue:(LTRasterColor *)color
public RasterColor getTrueColorValue(RasterColor color)
 function Leadtools.RasterImage.GetTrueColorValue( 
   color 
)
public:
RasterColor GetTrueColorValue( 
   RasterColor color
) 

パラメーター

カラー
ソースカラーを指定するRasterColor

戻り値

Trueカラー(RGB値を持っています)であると保証されるRasterColor
解説

本当に、true RGB色値へのパレットインデックス(RasterColor.IsPaletteIndexプロパティの値はtrueです)であるカラーを変換するために、このメソッドを使います

このメソッドで適切なものは、TranslateColorです。

サンプル

このサンプルは、透過GIFファイルを作成します

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.Drawing

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 = RasterImagePainter.CreateLeadDC(image)
   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()
   RasterImagePainter.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.FromKnownColor(RasterKnownColor.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
   Dim codecs As New RasterCodecs()

   ' Save this image as GIF
   Dim fileName As String = Path.Combine(LEAD_VARS.ImagesDir, "TransparentEllipses.gif")
   codecs.Save(image, fileName, RasterImageFormat.Gif, 8)

   ' Clean up
   image.Dispose()
   codecs.Dispose()
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.Drawing;

      
public void CreateTransparentGifExample()
{
   // Create a 24 bpp image, we will draw on it first then convert it to 8 bpp
   using (RasterImage image = new RasterImage(
      RasterMemoryFlags.Conventional,
      256,
      256,
      8,
      RasterByteOrder.Bgr,
      RasterViewPerspective.BottomLeft,
      null,
      IntPtr.Zero,
      0))
   {
      Assert.IsNotNull(image);
      // Fill the image with the transparent color.
      RasterColor transparentColor = RasterColor.FromKnownColor(RasterKnownColor.Magenta);
      new FillCommand(transparentColor).Run(image);

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

      // Draw on the image, else the entire image will be transparent.
      DrawEllipses(image);

      // Save this image as GIF
      string fileName = Path.Combine(ImagesPath.Path, "TransparentEllipses.gif");
      using (RasterCodecs codecs = new RasterCodecs())
      {
         codecs.Save(image, fileName, RasterImageFormat.Gif, 8);
      }
   }
}

void DrawEllipses(RasterImage image)
{
   // Fill this image with magenta color and draw some random ellipses on top
   const int ellipseWidth = 40;
   const int ellipseHeight = 40;
   IntPtr hdc = IntPtr.Zero;
   try
   {
      hdc = RasterImagePainter.CreateLeadDC(image);
      Assert.IsFalse(hdc == IntPtr.Zero);

      using (Graphics g = Graphics.FromHdc(hdc))
      {
         Assert.IsNotNull(g);
         Random r = new Random();
         for (int i = 0; i < 40; i++)
         {
            int x = r.Next(image.Width - ellipseWidth);
            int y = r.Next(image.Height - ellipseHeight);
            Color clr = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256));
            using (Brush brush = new SolidBrush(clr))
            {
               g.FillEllipse(brush, x, y, ellipseWidth, ellipseHeight);
            }
         }
      }
   }
   finally
   {
      // Make sure to delete the handle to the DC.
      if (hdc != IntPtr.Zero)
         RasterImagePainter.DeleteLeadDC(hdc);
   }
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;

      
public async Task 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);
   // Fill this image with magenta color
   FillCommand fillCmd = new FillCommand(RasterColorHelper.FromKnownColor(RasterKnownColor.Magenta));
   fillCmd.Run(image);
   RasterRegionXForm xform = new RasterRegionXForm();
   xform.ViewPerspective = RasterViewPerspective.TopLeft;
   xform.XOffset = 0;
   xform.YOffset = 0;
   xform.XScalarDenominator = 1;
   xform.XScalarNumerator = 1;
   xform.YScalarDenominator = 1;
   xform.YScalarNumerator = 1;
   image.AddRectangleToRegion(xform, LeadRectHelper.Create(0, 0, 100, 100), RasterRegionCombineMode.Set);
   FillCommand fillRgnCmd = new FillCommand(RasterColorHelper.FromKnownColor(RasterKnownColor.Black));
   fillRgnCmd.Run(image);

   // Convert this image to 8 bits/pixel
   ColorResolutionCommand colorResCmd = new ColorResolutionCommand(
      ColorResolutionCommandMode.InPlace,
      8,
      RasterByteOrder.Rgb,
      RasterDitheringMethod.None,
      ColorResolutionCommandPaletteFlags.Optimized,
      null);
   colorResCmd.Run(image);

   // Find the Magenta color and set it as the transparent color
   RasterColor transparentColor = RasterColorHelper.FromKnownColor(RasterKnownColor.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 codecs = new RasterCodecs();

   // Save this image as GIF
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync("TransparentEllipses.gif");
   ILeadStream saveStream = LeadStreamFactory.Create(saveFile);
   await codecs.SaveAsync(image, saveStream, RasterImageFormat.Gif, 8);

   // Clean up
   image.Dispose();
   codecs.Dispose();
}
必要条件

ターゲットプラットホーム

参照

参照

RasterImageクラス
RasterImageメンバ
TranslateColor(RasterImage、Int32)メソッド
アニメーションの実装