DIBSections



  • hi @ all

    HDC hdc;
    	HBITMAP hBitmap;
    	BYTE *pBits;
    	BITMAPINFOHEADER bmih;
    	//create bitmap
    	bmih.biSize	= sizeof(BITMAPINFOHEADER);
    	bmih.biWidth = 160;
    	bmih.biHeight = 43;
    	bmih.biPlanes = 1;
    	bmih.biBitCount = 1;
    	bmih.biCompression = BI_RGB;
    	bmih.biSizeImage = 0;
    	bmih.biXPelsPerMeter = 0;
    	bmih.biYPelsPerMeter = 0;
    	bmih.biClrUsed = 0;
    	bmih.biClrImportant = 0;
    
    	std::cout << "versuche Bitmap zu machen";
    	hBitmap = CreateDIBSection (NULL, (BITMAPINFO *) &bmih, 0, (void **) &pBits, NULL, 0);
    	std::cout << "bitmap gemacht";
    	std::cout << "erstelle DC";
    	hdc = CreateCompatibleDC(0);
    	std::cout << "setzte bitmap in den DC";
    	SelectObject(hdc, hBitmap);
    	std::cout << "zeichne Ellipse";
    	Ellipse(hdc, 0, 0, 160, 43);
    	std::cout << "lösche DC";
    	DeleteDC(hdc);
    	std::cout << "fertig";
    
        // load a bitmap onto the display
        lgLcdBitmap160x43x1 bmp;
        bmp.hdr.Format = LGLCD_BMP_FORMAT_160x43x1;
        std::cout << "kopiere pixel daten";
        memcpy(&bmp.pixels, pBits, sizeof(bmp.pixels));
        std::cout << "update bitmap";
        lgLcdUpdateBitmap(openContext.device, &bmp.hdr, LGLCD_SYNC_UPDATE(LGLCD_PRIORITY_NORMAL));
    

    Bei dieser Codezeile:

    memcpy(&bmp.pixels, pBits, sizeof(bmp.pixels));
    

    stürtzt das Programm ab 😞 ich kann mir leider nicht erklären warum. weil mit anderen zeigern als pBits funktioniert es das heist das dieser nicht einen richtigen speicherbereich enthält.

    mfg tobZel



  • Ein klarer Fall für den Debugger. Ist der Speicherbereich, in den du kopierst, groß genug, kopierst du evtl. mehr Zeichen, als in der Quelle vorhanden sind? Existiert die Quelle überhaupt bzw. war der Aufruf von CreateDIBSection erfolgreich? Alles Fragen, die dir dein Debugger ganz hervorragend beantworten kann 😉



  • ich denke ich habs gefunden!
    mein bitmap hat 1bit pro pixel die funktion will aber eins mit 1byte pro pixel
    was aber meiner meinung nach wenig sinn bei nem schwarz weiß display macht :|

    mfg tobZel


Anmelden zum Antworten