Je suis en train d'obtenir un bitmap créé à partir des données brutes à afficher dans WPF, à l'aide d'une image et un BitmapSource:Pourquoi BitmapSource.Create lance-t-il une ArgumentException?
Int32[] data = new Int32[RenderHeight * RenderWidth];
for (Int32 i = 0; i < RenderHeight; i++)
{
for (Int32 j = 0; j < RenderWidth; j++)
{
Int32 index = j + (i * RenderHeight);
if (i + j % 2 == 0)
data[index] = 0xFF0000;
else
data[index] = 0x00FF00;
}
}
BitmapSource source = BitmapSource.Create(RenderWidth, RenderHeight, 96.0, 96.0, PixelFormats.Bgr32, null, data, 0);
RenderImage.Source = source;
Cependant l'appel à BitmapSource.Create lance un ArgumentException, en disant « valeur ne tomber dans la fourchette attendue ". N'est-ce pas le moyen de le faire? Est-ce que je ne fais pas cet appel correctement?
Merci, mais comment diable avez-vous trouvé cette expression? Pourquoi n'est-ce pas simplement RenderWidth * 4? N'est-ce pas le nombre d'octets pour une ligne? –
Désolé, j'aurais dû fournir des détails. Dans votre cas, vous avez 'bpp = 32' donc oui la formule se réduit à' RenderWidth * 4'. Mais il y a des cas bizarres (les LCD bon marché utilisent 18 bpp) et le fait que les lignes de balayage doivent être alignées sur des frontières de 32 bits. J'ai fourni la formule générale et une explication de la façon d'en arriver là-dessus. J'espère que ça éclaire. – jason
Merci. Encore une question. Que fait le tilde sur un entier comme ça? –