Hoe krijg ik precies een blok geheugen gealloceerd in unmanaged code in managed code?
Mijn probleem is als volgt: ik laat graphviz een graph naar een memory buffer schrijven (die alloceert hij zelf) in BMP formaat (of PNG, maakt niks uit), en die wil ik dan laten zien in een windows form. Ik dacht dus het volgende te doen:
zoiets dan, maar MemoryStream kan die char* array niet naar Byte[] converteren. Uiteraard, maar hoe moet ik dat dan doen? Heb al veel geprobeerd maar niks werkte. correctie: ik kan wel element voor element naar een managed array kopieren maar dat wilde ik niet, ik wilde gewoon de al bestaande buffer gebruiken. Kan ik dit doen?
Mijn probleem is als volgt: ik laat graphviz een graph naar een memory buffer schrijven (die alloceert hij zelf) in BMP formaat (of PNG, maakt niks uit), en die wil ik dan laten zien in een windows form. Ik dacht dus het volgende te doen:
C++:
1
2
3
4
5
| char* buf = NULL; int len = 0; gvRenderData(gv, g, &buf, &len); IO::MemoryStream s(buf, false); Drawing::Bitmap bmp = Drawing::Image::FromStream(%s); |
zoiets dan, maar MemoryStream kan die char* array niet naar Byte[] converteren. Uiteraard, maar hoe moet ik dat dan doen? Heb al veel geprobeerd maar niks werkte. correctie: ik kan wel element voor element naar een managed array kopieren maar dat wilde ik niet, ik wilde gewoon de al bestaande buffer gebruiken. Kan ik dit doen?
[ Voor 1% gewijzigd door Darkvater op 22-09-2009 19:15 . Reden: foute functie-call in code ]
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge