C# if-Funktion
-
Hi,
ich heiße Lukas und bringe bereits meinen zweiten Beitrag in diesem Forum heraus.
Diesmal habe ich folgendes Problem :
Ich möchte ein Übungsprogramm schreiben. Wenn das Programm irgendetwas blaues auf dem Bildschirm sichtet, soll es h drücken. Das mit h drücken weiß ich natürlich aber das mit dem Sehen von etwas blauem, da habe ich keinen Plan.
Kann mir vielleicht jemand weiterhelfen?
LG Lukas
-
Also mit reinem C# wirst du wohl nicht weit kommen wenn du den Bildschirm abtasten willst, was du zwangslaeufig musst um eine gewisse Farbsignatur zu erfassen.
Das heisst du musst auf die WIN-API oder sogar noch tiefer ausweichen.
-
Kann man das nicht einfach in eine einfache if-Funktion bauen?
-
Also eine If-Funktion gibt es nicht.
Was du meinst ist eine If-Abfrage.Zu deiner Frage:
Nein, kann man nicht, wie hast du dir das bitte vorgestellt?if(bildschirmBlau) doSomethingWithTheLittleNiceBlueShit();
Diesen Mechanismus ob etwas "blau" ist musst du schon selbst programmieren.
-
using System; using System.Drawing; using System.Windows.Forms; namespace screencapture { public partial class Form1 : Form { Timer timer; PictureBox pbox; public Form1() { InitializeComponent(); timer = new Timer(); timer.Interval = 20; timer.Tick += new EventHandler(timer_Tick); Button btn = new Button(); btn.Text = "Timer"; btn.Click += new EventHandler(btn_Click); Controls.Add(btn); pbox = new PictureBox(); pbox.Location = new Point(0, btn.Height); pbox.Size = new Size(ClientRectangle.Width, ClientRectangle.Height - btn.Height); pbox.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; pbox.SizeMode = PictureBoxSizeMode.Zoom; pbox.BackColor = Color.White; Controls.Add(pbox); } void btn_Click(object sender, EventArgs e) { timer.Enabled = !timer.Enabled; } void timer_Tick(object sender, EventArgs e) { Bitmap tmp = (Bitmap)pbox.Image; Bitmap screenshot = Screenshot(); pbox.Image = screenshot; AnalyseBitmap(screenshot); if (tmp != null) tmp.Dispose(); } private void AnalyseBitmap(Bitmap screenshot) { //Such was blaues ;) } private Bitmap Screenshot() { var bmp = new Bitmap(SystemInformation.PrimaryMonitorSize.Width, SystemInformation.PrimaryMonitorSize.Height); using (Graphics g = Graphics.FromImage(bmp)) g.CopyFromScreen(0, 0, 0, 0, bmp.Size); return bmp; } } }
Gibt lustige Effekte wenn man das Fenster maximiert und ein anderes Fenster davor herumschiebt