Avatar billede baxos Nybegynder
15. november 2007 - 23:16 Der er 9 kommentarer og
1 løsning

Finde farve

Hej eksperter
Jeg har et program liggende i baggrunden der skal finde bestemte farver på skærmen.. hvordan gøres dette?
Avatar billede mr-kill Nybegynder
15. november 2007 - 23:50 #1
Ved ikke om du kan bruge dette til noget så. gdi32.dll kan give dig en bestemt pixel på skærmens farve.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            this.SuspendLayout();
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 264);
            this.Name = "Form1";
            this.Text = "Form1";
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
            this.ResumeLayout(false);
        }

        [DllImport("user32.dll")]
        static extern IntPtr GetDC(IntPtr hwnd);

        [DllImport("user32.dll")]
        static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

        [DllImport("gdi32.dll")]
        static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                IntPtr hdc = GetDC(IntPtr.Zero);
                uint pixel = GetPixel(hdc, Cursor.Position.X, Cursor.Position.Y);
                ReleaseDC(IntPtr.Zero, hdc);
                Color c = Color.FromArgb((int)pixel);
                this.BackColor = Color.FromArgb(c.R,c.G,c.B);
            }
        }


        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        private IContainer components = null;
    }
}
Avatar billede baxos Nybegynder
16. november 2007 - 02:13 #2
Synes nu ikke der sker noget?
Avatar billede baxos Nybegynder
16. november 2007 - 02:18 #3
aha fik det til at virke nu takker!
smid et svar :)
Avatar billede baxos Nybegynder
16. november 2007 - 02:41 #4
eller nej den giver ikke de rigtige farver?
Avatar billede mr-kill Nybegynder
16. november 2007 - 10:03 #5
Hmm den burde give rigtige farver? hvilken farve giver den så ikke rigtig?
Avatar billede baxos Nybegynder
16. november 2007 - 14:10 #6
For det første giver den orange ved mig når jeg fører den ned over WinXP startlinjen
og selvom jeg tager en bestemt farve får den forskellige farver
Avatar billede mr-kill Nybegynder
16. november 2007 - 14:16 #7
ahh fik vist byttet om på rød og blå.. prøv at skifte dette:

this.BackColor = Color.FromArgb(c.R,c.G,c.B);
-til-
this.BackColor = Color.FromArgb(c.B,c.G,c.R);
Avatar billede baxos Nybegynder
16. november 2007 - 18:40 #8
Super smid et svar.. :)
Avatar billede mr-kill Nybegynder
16. november 2007 - 22:09 #9
Hvis der er noget du ikke forstår og gerne vil vide så sig til...
Avatar billede baxos Nybegynder
18. november 2007 - 19:26 #10
Det var sådan set det ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester