Gå til innhold

C#: hvordan finne RGB value på pixel cordinater?


Anbefalte innlegg

finne RGB value på pixel cordinater inne i Form WorkArea.

 

holder på med en Mouse macro app og trenger en metode for og sjekke at mouse er i riktig loacation basert på 3 pixler me forkjelige farger.

 

noen som hvet hvordan dette kan gjøres?

Lenke til kommentar
Videoannonse
Annonse
Du må nesten forklare litt hvordan programmet er laget. Dersom du har et bitmap som representerer dette er det en enkel sak (enten ved å bruke GetPixel eller ved å bruke LockBitmap)

 

nei det er ikke et bitmap, det er inne i et java applet i en webBrowser som kjører i tabel1 i windows formet.

 

fant en VB app som gjør nesten det samme eg er ute etter og eg trenger samme funkjonaliteten i min C# code og har ikke helt control på og gjøre vb om til c#

 

http://www.codeguru.com/vb/gen/vb_graphics...icle.php/c2357/

Lenke til kommentar

private static class PixelColor
{
 [DllImport("User32")]
 private static extern int GetPixel(IntPtr hdc, int x, int y);
 [DllImport("User32")]
 private static extern IntPtr GetWindowDC(IntPtr hwnd);

 private static readonly IntPtr DesktopDC = GetWindowDC(IntPtr.Zero);

 public static System.Drawing.Color GetPixelAtCursor()
 {
System.Drawing.Point p = Cursor.Position;
return System.Drawing.Color.FromARGB(GetPixel(DektopDC, p.X, p.Y));
 }
}

Tror dette burde funke.

Endret av GeirGrusom
Lenke til kommentar

funka kjempe bra takk :) men endra en skriveleif

 

[DllImport("User32")]

private static extern int GetPixel(IntPtr hdc, int x, int y)

 

til

[DllImport("gdi32")]

 

så funker det, men fårstår ikke hvorfor knappen ikke skifter farge når eg teste dette me denne coden.

 

namespace Color_tool
{
public partial class Form1 : Form
{
	[DllImport("gdi32")]
	private static extern int GetPixel(IntPtr hdc, int x, int y);
	[DllImport("User32")]
	private static extern IntPtr GetWindowDC(IntPtr hwnd);

	private static readonly IntPtr DesktopDC = GetWindowDC(IntPtr.Zero);

	public static System.Drawing.Color GetPixelAtCursor()
	{
		System.Drawing.Point p = Cursor.Position;
		return System.Drawing.Color.FromArgb(GetPixel(DesktopDC, p.X, p.Y));
	}

	public Form1()
	{
		InitializeComponent();
	}

	private void Form1_Load(object sender, EventArgs e)
	{
		button1.BackColor = Color.Black;
	}

	private void timer1_Tick(object sender, EventArgs e)
	{
		string colorX = GetPixelAtCursor().ToString();
		Color backX = GetPixelAtCursor();
		button1.BackColor = backX;
		label1.Text = colorX;
	}

	private void button1_Click(object sender, EventArgs e)
	{
		if (timer1.Enabled == false)
			timer1.Enabled = true;
		else
			timer1.Enabled = false;
	}
 }
}

Endret av sommy
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...