Maison > développement back-end > C++ > Comment puis-je obtenir la couleur d'un pixel d'écran pour déclencher des actions dans mon logiciel ?

Comment puis-je obtenir la couleur d'un pixel d'écran pour déclencher des actions dans mon logiciel ?

Susan Sarandon
Libérer: 2024-12-29 20:43:10
original
216 Les gens l'ont consulté

How Can I Get a Screen Pixel's Color to Trigger Actions in My Software?

Détermination de la couleur des pixels de l'écran pour déclencher des actions ultérieures

Dans le développement de logiciels, il est souvent nécessaire de récupérer la couleur d'un pixel d'écran spécifique pour des fins diverses. Cette fonctionnalité est particulièrement utile pour les applications qui nécessitent une interaction avec la saisie de l'utilisateur ou la détection d'éléments visuels spécifiques sur l'écran.

Lecture efficace des couleurs des pixels

Pour obtenir avec précision la couleur d'un pixel particulier sur votre moniteur, nous vous recommandons d'utiliser une méthode qui identifie l'emplacement du pixel par ses coordonnées. L'extrait de code suivant illustre cette approche :

[DllImport("user32.dll")]
static extern bool GetCursorPos(ref Point lpPoint);

[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern int BitBlt(IntPtr hDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop);

public Color GetColorAt(Point location)
{
    using (Graphics gdest = Graphics.FromImage(screenPixel))
    {
        using (Graphics gsrc = Graphics.FromHwnd(IntPtr.Zero))
        {
            IntPtr hSrcDC = gsrc.GetHdc();
            IntPtr hDC = gdest.GetHdc();
            int retval = BitBlt(hDC, 0, 0, 1, 1, hSrcDC, location.X, location.Y, (int)CopyPixelOperation.SourceCopy);
            gdest.ReleaseHdc();
            gsrc.ReleaseHdc();
        }
    }

    return screenPixel.GetPixel(0, 0);
}
Copier après la connexion

Ce code capture essentiellement un pixel à l'emplacement actuel du curseur. Pour obtenir la couleur à n'importe quel emplacement de pixel arbitraire, spécifiez simplement les coordonnées souhaitées dans le paramètre Point.

Déclencheur d'action ultérieure

Une fois que vous avez la couleur du pixel, vous pouvez utilisez-le comme déclencheur pour une autre fonction. Par exemple, vous pouvez vérifier si la couleur des pixels correspond à une couleur prédéfinie spécifique pour exécuter une certaine action. Le bloc de code suivant illustre ce concept :

while(true)
{
    var c = GetColorAt(location);

    if (c.R == color.R &&& c.G == color.G &&& c.B == color.B)
    {
        DoAction();
        return;
    }

    // Sleep until other applications yield CPU time
    Thread.Sleep()
}
Copier après la connexion

Ce code interroge en permanence l'emplacement du pixel spécifié, en comparant sa couleur à la couleur attendue. Si une correspondance est trouvée, il invoque la fonction DoAction() et quitte la boucle while. Vous pouvez remplacer DoAction() par l'action souhaitée, comme l'exécution d'un bloc de code personnalisé ou le déclenchement d'un événement.

En utilisant les techniques décrites ci-dessus, vous pouvez récupérer efficacement la couleur d'un pixel de l'écran et l'utiliser pour déclenchez des actions ultérieures dans vos applications logicielles, vous permettant d'interagir dynamiquement avec l'écran et les entrées de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal