GDI: pixelausgabe - warum funzt es nicht?



  • hi, hab mich leider ewig nichtmehr mit c beschäftigt, hab dementsprechend auch kaum mehr ahnung. also frag ich einfach mal drauf los:

    #include "stdafx.h"
    #include <stdio.h>
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
    
    	HDC hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
    	COLORREF p = GetPixel(hdcScreen,511,383);
    	printf("val: %i %i %i\n", GetRValue(p),GetGValue(p),GetBValue(p));
    	return 0;
    }
    

    warum bekomm ich hier immer "0 0 0" raus?

    vielen dank schonmal für jede hilfe

    edit: ok an der stelle schein wohl was schwarzes gewesen zu sein 🙄

    ich finde den löschen button nicht



  • pixartist schrieb:

    edit: ok an der stelle schein wohl was schwarzes gewesen zu sein 🙄

    Ne das hat damit nix zu tun 😉 . Du erstellst hier nur einen Speicherkontext der kompatibel zum Bildschirm ist. Dieser HDC ist standardmäßig (vollständig) schwarz. Wenn Du die Farbe eines bestimmten Pixels auf dem Bildschirm ermitteln willst, musst Du wie folgt vorgehen (C++):

    #include <windows.h>
    #include <iostream>
    
    int main()
    {
        using namespace std;
    
        const int iX = 0, iY = 0; // Position auf dem Desktop
        HDC hdcScreen = GetWindowDC(NULL);
        COLORREF clrScreen = GetPixel(hdcScreen, iX, iY);
        cout << "(" << iX << "|" << iY << "), RGB("
             << GetRValue(clrScreen) << ", "
             << GetGValue(clrScreen) << ", "
             << GetBValue(clrScreen) << ")" << endl;
        return (0);
    }
    

Anmelden zum Antworten