c# resim bul ve tıkla

TrOwX

Katılımcı Üye
29 Tem 2017
276
0
Trabzon/TR

Tcspy

Üye
5 Eki 2019
217
23
TC

Tcspy

Üye
5 Eki 2019
217
23
TC
sorun devam ediyor

c# image finder arıyorum kod veya fremwork önerecek var mı python değil c# koca projeyi pythona nasıl çevireyim bir yol olması gerekiyor koskoca yazılım dili c# düşünmüşlerdir macro recoder nasıl yazılıyor jitbit
 

gikaa123

Kıdemli Üye
26 Haz 2012
2,530
18
c# image finder arıyorum kod veya fremwork önerecek var mı python değil c# koca projeyi pythona nasıl çevireyim bir yol olması gerekiyor koskoca yazılım dili c# düşünmüşlerdir macro recoder nasıl yazılıyor jitbit
Şu yazdıklarını google amcaya yazsan , karşına çıkan birsürü örnekten birini seçip yazmaya başlasan ve hata aldığın yer olursa bize danışsan cevaplasak çok daha kolay olur gibi.
 

Tcspy

Üye
5 Eki 2019
217
23
TC
Şu yazdıklarını google amcaya yazsan , karşına çıkan birsürü örnekten birini seçip yazmaya başlasan ve hata aldığın yer olursa bize danışsan cevaplasak çok daha kolay olur gibi.
private void Form2_Load(object sender, EventArgs e)
{

Rectangle rect = FindImageOnScreen(ImgToFind, false);

if (rect != Rectangle.Empty)//Image Foud
{
//Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
//Cursor.Position = cntr;

MessageBox.Show(rect.ToString());

}
else
MessageBox.Show("Image not found");

}


FindImageOnScreen yok hadi bakalım açıkla hangi using kütüpanesi sanki bakmıyorum
 

gikaa123

Kıdemli Üye
26 Haz 2012
2,530
18
private void Form2_Load(object sender, EventArgs e)
{

Rectangle rect = FindImageOnScreen(ImgToFind, false);

if (rect != Rectangle.Empty)//Image Foud
{
//Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
//Cursor.Position = cntr;

MessageBox.Show(rect.ToString());

}
else
MessageBox.Show("Image not found");

}


FindImageOnScreen yok hadi bakalım açıkla hangi using kütüpanesi sanki bakmıyorum
USİNG ifadesi ile eklediğimiz bir KÜTÜPHANE değil , parametreli bir METHOD olduğunu düşünüyorum. Methodu yazmadığın için de yok. copy+paste yaptığın siteyi bi atar mısın ? bir de kod olarak değil de kullandığın ide'de ekran görüntüsü alıp atarsan daha rahat anlaşılır.
 
Son düzenleme:

Tcspy

Üye
5 Eki 2019
217
23
TC

gikaa123

Kıdemli Üye
26 Haz 2012
2,530
18
Sitede belirttiğin alandaki kodun tamamı bu şekilde. Biraz daha kurcalayabilirsiniz, sanırım en son postta arkadaş çözümü paylaşmış. Forumda müsait olan biri yardım edecektir, yarın çözülmüş olmaz ise ben de araştırır yardımcı olurum.

C#:
      using System.Drawing;
      using System.Drawing.Imaging;
      using System.Runtime.InteropServices; 

        private Bitmap ImgToFind = new Bitmap(@"C:\bitmaps\find image.png");
        private Bitmap ScreenBmp = new Bitmap(@"c:\bitmaps\find image screen.png");
      
       private void Form1_Load(object sender, EventArgs e)
        {

            Rectangle rect = FindImageOnScreen(ImgToFind, false);

            if (rect != Rectangle.Empty)//Image Foud
            {
                //Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
                //Cursor.Position = cntr;

                MessageBox.Show(rect.ToString());

            }
            else
                MessageBox.Show("Image not found");
        }

        /// <summary>Finds a matching image on the screen.</summary>

        ///     ''' <param name="bmpMatch">The image to find on the screen.</param>

        ///     ''' <param name="ExactMatch">True finds an exact match (slowerer on large images). False finds a close match (faster on large images).</param>

        ///     ''' <returns>Returns a Rectangle of the found image in sceen coordinates.</returns>
        private Rectangle FindImageOnScreen(Bitmap bmpMatch, bool ExactMatch)
        {

            BitmapData ImgBmd = bmpMatch.LockBits(new Rectangle(0, 0, bmpMatch.Width, bmpMatch.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
            BitmapData ScreenBmd = ScreenBmp.LockBits(new Rectangle(0, 0, ScreenBmp.Width, ScreenBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

            byte[] ImgByts = new byte[(Math.Abs(ImgBmd.Stride) * bmpMatch.Height) - 1 + 1];
            byte[] ScreenByts = new byte[(Math.Abs(ScreenBmd.Stride) * ScreenBmp.Height) - 1 + 1];

            Marshal.Copy(ImgBmd.Scan0, ImgByts, 0, ImgByts.Length);
            Marshal.Copy(ScreenBmd.Scan0, ScreenByts, 0, ScreenByts.Length);

            bool FoundMatch = false;
            Rectangle rct = Rectangle.Empty;
            int sindx, iindx;
            int spc, ipc;

            int skpx = System.Convert.ToInt32((bmpMatch.Width - 1) / (double)10);
            if (skpx < 1 | ExactMatch)
                skpx = 1;
            int skpy = System.Convert.ToInt32((bmpMatch.Height - 1) / (double)10);
            if (skpy < 1 | ExactMatch)
                skpy = 1;

            for (int si = 0; si <= ScreenByts.Length - 1; si += 3)
            {
                FoundMatch = true;
                for (int iy = 0; iy <= ImgBmd.Height - 1; iy += skpy)
                {
                    for (int ix = 0; ix <= ImgBmd.Width - 1; ix += skpx)
                    {
                        sindx = (iy * ScreenBmd.Stride) + (ix * 3) + si;
                        iindx = (iy * ImgBmd.Stride) + (ix * 3);
                        spc = Color.FromArgb(ScreenByts[sindx + 2], ScreenByts[sindx + 1], ScreenByts[sindx]).ToArgb();
                        ipc = Color.FromArgb(ImgByts[iindx + 2], ImgByts[iindx + 1], ImgByts[iindx]).ToArgb();
                        if (spc != ipc)
                        {
                            FoundMatch = false;
                            iy = ImgBmd.Height - 1;
                            ix = ImgBmd.Width - 1;
                        }
                    }
                }
                if (FoundMatch)
                {
                    double r = si / (double)(ScreenBmp.Width * 3);
                    double c = ScreenBmp.Width * (r % 1);
                    if (r % 1 >= 0.5)
                        r -= 1;
                    rct.X = System.Convert.ToInt32(c);
                    rct.Y = System.Convert.ToInt32(r);
                    rct.Width = bmpMatch.Width;
                    rct.Height = bmpMatch.Height;
                    break;
                }
            }

            bmpMatch.UnlockBits(ImgBmd);
            ScreenBmp.UnlockBits(ScreenBmd);
            //ScreenBmp.Dispose();
            return rct;
        }
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.