Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

12.04.2004, 16:23

Zitat von »"big_muff"«

GetPixel((HDC)hBitmap, x, y)

Du darfst nicht einfach ein HBITMAP in ein HDC umwandeln, das sind zwei völlig verschiedene Objekte. Erstelle ein DC, aktiviere das Bitmap mit "SelectObject" und verwende dann GetPixel auf das DC.

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

12

12.04.2004, 19:41

Sorry :angel: . Ich arbeite eben normalerweise nie mit dem GDI.

Also ich hab das mal so eingefügt.

Quellcode

1
2
3
4
5
6
7
HDC GDIObj;

GDIObj=GetDC(NULL);

if(GDIObj==NULL) //... blablabla

SelectObject(GDIObj, hBitmap);


Die Funktion SelectObject(), liefert bei mir NULL zurück. Was habe ich da falsch gemacht? :(
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

13

12.04.2004, 19:46

Hier mal ein Beispiel wie ich bei mir Heightmaps lade

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void CTarrain::LoadHeightmap(HWND hWnd)
{
    HBITMAP hMap = (HBITMAP)LoadImage(0, m_strHeightmap.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    if(!hMap) throw std::string("Heightmap Image konnte nicht geladen werden!");
    HDC hDC = CreateCompatibleDC(GetDC(hWnd));
    SelectObject(hDC, hMap);
    
    BITMAP bmp;
    GetObject(hMap, sizeof(BITMAP), &bmp);
    m_dwWidth = bmp.bmWidth;
    m_dwDepth = bmp.bmHeight;

    // Bitmap zwischen speichern
    if(!(m_pbyHeightmap = new BYTE[m_dwWidth*m_dwDepth]))
        throw std::string("Nicht genug speicher für die Heightmapdaten!");

    for(DWORD y = 0; y < m_dwDepth; ++y)
    {
        for(DWORD x = 0; x < m_dwWidth; ++x)
            m_pbyHeightmap[x + (y * m_dwDepth)] = (BYTE)(GetPixel(hDC, x, y) % 256);
    }

    DeleteDC(hDC);
    DeleteObject(hMap);
}


GetDC liefert das DC Objekt eines Fensters. Z.B. deines Ausgabefensters. Du must für ein neues Objekt aber einen neuen DC erstellen. Das geht mit CreateCompatibleDC().
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

14

12.04.2004, 19:55

Vielen Dank an:

Osram,
Fabster,
David Scherfgen und
Dragon Master,

die mir bei diesem Problem geholfen haben!!!!

:ola:
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Werbeanzeige