createpalette und anschließend ein bitmap selber machen
-
Hi,
ich möchte ein bild anhand eines bytefeldes (50*50 bytes) darstellen um heightfields sichtbar zu machen.
bis jetzt hab ich eine Palette erzeugt, wobei diese irgendwo einen Ausnahmefehler erzeugt.HPALETTE MakePal (int WaterMark) { HPALETTE Pal; LOGPALETTE *logPal; int PalSize, i; logPal = (LOGPALETTE*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * 255)); logPal->palVersion = 0x300; logPal->palNumEntries = 0xff; for (i = 0; i <= WaterMark; i++) // Blau bis zur Wassermarke { logPal->palPalEntry[i].peRed = 0 + 5 * i; logPal->palPalEntry[i].peGreen = 0 + 5 * i; logPal->palPalEntry[i].peBlue = 0x80; logPal->palPalEntry[i].peFlags = PC_RESERVED; } for (i = WaterMark + 1; i <= 255; i++) // Braun bis zur Wassermarke { logPal->palPalEntry[i].peRed = 0 + i; logPal->palPalEntry[i].peGreen = 0 + i; logPal->palPalEntry[i].peBlue = WaterMark; logPal->palPalEntry[i].peFlags = PC_RESERVED; } Pal = CreatePalette (logPal); return Pal; };
leider weiß ich immernoch nicht, wie ich nun aus meinem Bytefeld ein Bitmap erstelle. - zumindest seh ich nicht durch bei CreateDIBSection.
hat das zufällig jemand mal gemacht und kann mir seinen Code posten - oder ein anderes Beispiel? Will ja nur ein wenig Code klauen *fg*
-
Wollt's editierne, war nur nix, also muss ich nen anhang ransetzen. - sry..
vielleicht hilft das ja weiter:
mein Programm stirbt laut dem gdb (dev 4.9.6.0) schon beim Aufruf der Funktion, was ich nicht wirklich verstehe, da er das Ganze ja compiliert hat..
-
Lad mal das Programm hoch damit wir es in einen vernünftigen Debugger schmeissen können (Visual C++)
-
kklaro, kann ich tun:
mitglied.lycos.de/DocJunioR/Helper.zipallerdings sind das inzwischen schon einige Dateien (wollte doch nur nen kleinen Terraingenerator schreiben) die Funktion liegt in der mygrid.cpp und wird auch von dort aus aufgerufen. (im verzeichnis mygrid)
cYa && thx
DjRAdded: Ich hab hier scheinbar Probleme beim uppen. entweder das, oder die Server von tripod sterben gerade wegen der unzulänglichkeit einiger Admins..
Einfach immer mal wieder probieren. ich werd's auch nochmal versuchen..[ Dieser Beitrag wurde am 29.11.2002 um 18:13 Uhr von DocJunioR editiert. ]
-
Wenn man den Speicher für 255 Elemente anlegt und auf das 256ste schreiben will, hat man noch immer nicht mitbekommen, wie das mit der Indizierung von C-Arrays funktioniert
-
*fg* insofern hast Du recht. allerdings ist es nicht auszuschließen, dass man wenn man 7 Stunden COBOL lernen muss und dann noch 4 Stunden am PC sitzt und C++ programmiert, man einiges durcheinander bringt oder einfach nicht mehr so die Konzentration hat, oder? Ich hatte den Fehler schon kurz nach dem Posting bemerkt. Da ich aber nicht eingeloggt war um das zu ändern, konnte ich das nicht utn und hab's dann irgendwann vergessen...
Aber das ist nicht der Fehler. Wie gesagt, beim Debuggen steigt das Programm schon beim Aufruf des Systems aus...