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 😃


Anmelden zum Antworten