5
Mam WriteableBitmap
, którego używam jako niebezpieczną metodę do wykreślania pikseli. Zasadniczą część wygląda następująco:Jak utworzyć wskaźnik w języku C#?
private unsafe void DrawBitmap(WriteableBitmap bitmap, byte[] pixels)
{
// Boilerplate omitted...
fixed (byte* pPixels = pixels)
{
for (int y = 0; y < height; y++)
{
var row = pPixels + (y * width);
for (int x = 0; x < width; x++)
{
*(row + x) = color[y + height * x];
}
}
}
bitmap.WritePixels(new Int32Rect(0, 0, width, height), pixels, width*pf.BitsPerPixel/8, 0);
}
jednak nie jest pewne, że to, co użytkownik chce działka jest typu byte
, i byłoby sensu, aby ten sposób rodzajowy (tj DrawBitmap<T>
), ale w jaki sposób Tworzę wskaźnik pPixels
typu T*
?
Czy istnieje inna sztuczka, która sprawi, że mój DrawBitmap
stanie się ogólny?
„Generic” oznacza, że ta sama metoda (ta sama IL) pracuje dla * wszystkich * typów, a nie tylko te, które jest rzeczywiście używany jako parametr typu. Różne typy liczb całkowitych (bajt, int, ...) wymagają różnych IL, więc nie można uczynić tej metody ogólną. – dtb
Nie bardzo wiem, skąd pochodzi 'pPixels' lub' pixels'? Opublikuj cały kod? – LukeHennerley
Ale jak mówi @dtb, potrzebujesz typu, który w prostych terminach pochodzi od 'object', typów wartości nie można używać w metodach ogólnych. Zamiast tego rozważam użycie różnych przeciążeń metody. – LukeHennerley