private static Color[] ScalePSMCT32PixelsToFullAlphaRange(Color[] colors) { int colorCount = colors.Length; Color[] scaledColors = new Color[colorCount]; for (int c = 0; c < colorCount; c++) { scaledColors[c] = Color.FromArgb( PS2PixelFormatHelper.ScaleHalfRangeAlphaToFullRange(colors[c].A), colors[c].R, colors[c].G, colors[c].B); } return(scaledColors); }
public Color[] GetPixels() { if (IsIndexed && mRasterStructNode.DataStructNode.Pixels == null) { mRasterStructNode.DataStructNode.Pixels = new Color[Width * Height]; for (int y = 0; y < Height; y++) { for (int x = 0; x < Width; x++) { var color = Palette[PixelIndices[x + y * Width]]; mRasterStructNode.DataStructNode.Pixels[x + y * Width] = Color.FromArgb(PS2PixelFormatHelper.ScaleHalfRangeAlphaToFullRange(color.A), color.R, color.G, color.B); } } } return(mRasterStructNode.DataStructNode.Pixels); }
/// <summary> /// <para>Construct a bitmap from the data in this instance.</para> /// <para>Subsequent calls to this method will return the same bitmap instance without constructing a new one.</para> /// </summary> public Bitmap GetBitmap() { if (mBitmap != null) { return(mBitmap); } if (IsIndexed) { mBitmap = BitmapHelper.Create(Palette.Select(x => Color.FromArgb(PS2PixelFormatHelper.ScaleHalfRangeAlphaToFullRange(x.A), x.R, x.G, x.B)).ToArray(), PixelIndices, Width, Height); } else { mBitmap = BitmapHelper.Create(Pixels.Select(x => Color.FromArgb(PS2PixelFormatHelper.ScaleHalfRangeAlphaToFullRange(x.A), x.R, x.G, x.B)).ToArray(), Width, Height); } return(mBitmap); }