создать пустой BitmapSource в C #

Какой самый быстрый (несколько строк кода и низкое использование ресурсов) способ создать пустой ( 0x0 px или 1x1 px и полностью прозрачный) Экземпляр BitmapSource в c #, который используется, когда ничего не нужно визуализировать.

9
задан Arcturus 11 January 2019 в 10:09
поделиться

2 ответа

Используйте метод Создать.

Пример украден из MSDN: :)

int width = 128;
int height = width;
int stride = width/8;
byte[] pixels = new byte[height*stride];

// Try creating a new image with a custom palette.
List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>();
colors.Add(System.Windows.Media.Colors.Red);
colors.Add(System.Windows.Media.Colors.Blue);
colors.Add(System.Windows.Media.Colors.Green);
BitmapPalette myPalette = new BitmapPalette(colors);

// Creates a new empty image with the pre-defined palette
BitmapSource image = BitmapSource.Create(
                                         width, height,
                                         96, 96,
                                         PixelFormats.Indexed1,
                                         myPalette, 
                                         pixels, 
                                         stride);
12
ответ дан 4 December 2019 в 07:13
поделиться

Благодаря подсказке Arcutus теперь у меня есть это (и работает нормально):

var i = BitmapImage.Create(
    2,
    2,
    96,
    96,
    PixelFormats.Indexed1,
    new BitmapPalette(new List<Color> { Colors.Transparent }),
    new byte[] { 0, 0, 0, 0 },
    1);

Если я уменьшу это изображение, я получу исключение ArgumentException. Я понятия не имею, почему я не могу создать изображение меньшего размера, чем 2x2px.

13
ответ дан 4 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: