NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Ladislav Krejcí:28.5.2017 14:29

Ahoj, vytvořil jsem si kód, který mě získá z návrhu DPS cesty pro gravirovačku
pomocí kodu

for (int x = 1; x < bitMapWidth; x++)
            {
                for (int y = 1; y < bitMapHeight; y++)
                {
                    pixelColor = import.GetPixel(x, y);
                    if (pixelColor.R <= 10 && pixelColor.G <= 10 && pixelColor.B <= 10)
                    {
                        write = true;
                    }
                    else
                    {
                        write = false;
                    }
                    if (write == true)
                    {

                        if (y + 1 < bitMapHeight && import.GetPixel(x, y + 1).R >= 200)
                        {
                            AB.Add(Tuple.Create(x , y + 1));
                        }
                        if (y - 1 >= 1 && import.GetPixel(x, y - 1).R >= 200)
                        {
                            AB.Add(Tuple.Create(x, y - 1));

                        }
                        if (x + 1 < bitMapWidth && import.GetPixel(x + 1, y).R >= 200)
                        {
                            AB.Add(Tuple.Create(x + 1, y));
                        }
                        if (x - 1 >= 1 && import.GetPixel(x - 1, y).R >= 200)
                        {
                            AB.Add(Tuple.Create(x - 1, y));
                        }

                    }

                }
            }

který se opakuje podle

if (write1 < target)
           {
               write1++;
               for (int i = 0; i < AB.Count; i++)
               {
                   import.SetPixel(AB[i].Item1, AB[i].Item2, Color.Black);
               }
               pictureBox_import.Image = import;

               pixel_get();
           }

mám problém s tím že když nastavím vyšší "target" tak se mě cesty propojí
Otázka: Jak udělám aby program vypsal chybovou hlášku když na místě kam chce vložit černý pixel v původním obrázku pixel černý byl ? zkoušel jsem si hodit obrázek do jiné bitmap a kontrolovat pomocí

if (y + 1 < bitMapHeight && import.GetPixel(x, y + 1).R >= 200)
                       {
                          if(puvodni_bit_map.GetPixel(x , y + 1).R < 10)
                               {
                                       MessageBox.Show("CHYBA");
                               }
                       }

ale bez úspěchu chybová hláška se nikdy nezobrazila

Editováno 28.5.2017 14:31
 
Odpovědět
28.5.2017 14:29
Avatar
Odpovídá na Ladislav Krejcí
Luboš Běhounek Satik:28.5.2017 14:43

Umíš debugovat - krokovat program, nahlížet do proměnných, používat breakpointy?

A jinak jak nastavuješ puvodni_bit_map? Neděláš to jen prostým přiřazením? Pak bys totiž nevytvořil kopii tý bitmapy, ale jen jinej odkaz na tu samou bitmapu :)

Nahoru Odpovědět
28.5.2017 14:43
https://www.facebook.com/peasantsandcastles/
Avatar
Ladislav Krejcí:28.5.2017 14:50

bitovou mapu nastavuji pomocí bitmap puvodni_bit_map = import.Clone(new Rectangle(0, 0, import.Width, import.Height), import.PixelFor­mat); ,který se inicializuje hned na začátku programu

samozřejmě že umím krokovat ale když tam má desítky tisíc pixelů tak to celkem nereálné

 
Nahoru Odpovědět
28.5.2017 14:50
Avatar
Ladislav Krejcí:28.5.2017 15:29

pardon zapomněl jsem určit zda je GetPixel(x,y).A > 0
můžete tento topic smazat Děkuji

 
Nahoru Odpovědět
28.5.2017 15:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.