如何从像素和调色板创建256色NSImage

时间:2016-06-05 18:50:52

标签: macos xamarin nsimage bitmapdata color-palette

我有一个像素字节数组和一个颜色调色板,代表256色调色板索引的Windows位图。我需要从中创建OSX NSImage。

在Windows中它只是:

public Bitmap CreateFromData(byte[] buffer, int width, int height, byte[] palette3x256)
    {
       //allocate new bitmap
       Bitmap img = new Bitmap(width, height, PixelFormat.Format8bppIndexed);

       //fill image palette with color information
       ColorPalette pal = img.Palette;
       for (int i = 0; i < palette3x256.Length; i += 3)
           pal.Entries[i / 3] = Color.FromArgb(palette3x256[i + 2], palette3x256[i + 1], palette3x256[i]);
       img.Palette = pal;

       // copy pixels to bitmap
       BitmapData data = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.WriteOnly, img.PixelFormat);
       Marshal.Copy(buffer, 0, data.Scan0, buffer.Length);
       img.UnlockBits(data);

      return img;
    }

我如何在OSX-Xamarin中执行此操作?我需要创建一个NSImage或NSBitmapImageRep?不幸的是,我对这些原生的OSX事物并不是很熟悉。

0 个答案:

没有答案