В чем разница между `InstallPixels ()` и `SetPixels ()` в `SkiaSharp.SKBitmap`? - PullRequest
0 голосов
/ 14 апреля 2020

Мне не ясно, как работают SKBitmap.InstallPixels() и SKBitmap.SetPixels(). Вот документация для каждого метода (есть несколько перегрузок метода):

// Summary:
//     Installs the specified pixels into the bitmap.
//
// Parameters:
//   info:
//     The image information describing the pixels.
//
//   pixels:
//     The pixels to install.
//
// Returns:
//     Returns true on success, or false on failure. If there was an error, the bitmap
//     will be set to empty.
public bool InstallPixels(SKImageInfo info, IntPtr pixels);

// Summary:
//     Replaces the current pixel address for the bitmap.
//
// Parameters:
//   pixels:
//     The new pixel address.
public void SetPixels(IntPtr pixels);

Я предполагаю, что InstallPixels() копирует данные из IntPtr в локальный байтовый массив, тогда как SetPixels() делает переданный IntPtr массив байтов для использования.

Если мое предположение верно, значит ли это, что если я хочу использовать InstallPixels(), мне нужно сначала вызвать TryAllocPixels(), чтобы создать внутренний байтовый массив ? Если я хочу использовать SetPixels(), нужно ли вручную удалять байтовый массив или он удаляется при удалении SKBitmap?

1 Ответ

1 голос
/ 14 апреля 2020

installpixles устанавливает пиксель в растровое изображение в первый раз. Setpixles устанавливает уже установленный пиксель в новое значение

...