Advertisement
FHRL

Localización de círculos V0.3.6 (integracion del codigo)

Feb 28th, 2022 (edited)
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.13 KB | None | 0 0
  1. /*
  2.  * Created by SharpDevelop.
  3.  * User: fhrl0
  4.  * Date: 14/09/2019-21/02/2022
  5.  * Time: 08:00 p. m.
  6.  * Version: 0.3.6
  7.  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8.  */
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Drawing;
  12. using System.Windows.Forms;
  13.  
  14. namespace Actividad_1
  15. {
  16.     /// <summary>
  17.     /// Description of MainForm.
  18.     /// </summary>
  19.     public partial class MainForm : Form
  20.     {
  21.         Bitmap Original,Drawing;
  22.         OpenFileDialog openFileDialogImagen = new OpenFileDialog();
  23.         public MainForm()
  24.         {
  25.             //
  26.             // The InitializeComponent() call is required for Windows Forms designer support.
  27.             //
  28.             InitializeComponent();
  29.            
  30.             //
  31.             // TODO: Add constructor code after the InitializeComponent() call.
  32.             //
  33.         }
  34.         int codificador(bool[]arregloBits){
  35.             int abstracto=0;
  36.             for(int i=0;i<arregloBits.Length;i++){
  37.                 abstracto=abstracto*2;
  38.                 if(arregloBits[i])
  39.                     abstracto++;
  40.             }
  41.             return abstracto;
  42.         }
  43.         bool esNegro(int x,int y){
  44.             return(int)Original.GetPixel(x,y).R
  45.                  +(int)Original.GetPixel(x,y).G
  46.                  +(int)Original.GetPixel(x,y).B<(int)383;
  47.         }
  48.         void ButtonMostrarClick(object sender, EventArgs e){
  49.             if(pictureBoxMuestra.Image==null){
  50.             }else{
  51.                 Original=(Bitmap)pictureBoxMuestra.Image;
  52.                 Drawing=(Bitmap)Original;
  53.                 analizar(0,0,Original.Width-1,Original.Height-1);
  54.                 pictureBoxMuestra.Refresh();
  55.                 pictureBoxMuestra.Image=Drawing;
  56.             }
  57.    
  58.         }
  59.         void analizar(int xInicio,int yInicio,int xFin,int yFin){
  60.             int xCentro=(xInicio+xFin)/2,
  61.                 yCentro=(yInicio+yFin)/2;
  62.             detecta(xInicio,yInicio,xFin,yFin);
  63.             bool[]sentencias={xInicio+3<xFin-3,yInicio+3<yFin-3};
  64.             switch(codificador(sentencias)){//enum{}?
  65.                 case 1://01
  66.                     analizar(xInicio,yInicio,xFin,yCentro-1);
  67.                     analizar(xInicio,yCentro,xFin,yFin);
  68.                 return;
  69.                 case 2://10
  70.                     analizar(xInicio,yInicio,xCentro-1,yFin);analizar(xCentro,yInicio,xFin,yFin);
  71.                 return;
  72.                 case 3://11
  73.                     analizar(xInicio,yInicio,xCentro-1,yCentro-1);analizar(xCentro,yInicio,xFin,yCentro-1);
  74.                     analizar(xInicio,yCentro,xCentro-1,yFin);     analizar(xCentro,yCentro,xFin,yFin);
  75.                 return;
  76.                 default:return;//00
  77.             }
  78.         }
  79.         void detecta(int xInicio,int yInicio,int xFin,int yFin){
  80.             int xCentro=(xInicio+xFin)/2,
  81.                 yCentro=(yInicio+yFin)/2;
  82.             for(bool[]tipoVorde={esNegro(xInicio,yInicio),esNegro(xFin,yInicio),
  83.                                  esNegro(xInicio,yFin),esNegro(xFin,yFin)};
  84.                                  esNegro(xCentro,yCentro)&&(!Equals(Drawing.GetPixel(xCentro,yCentro),Color.OrangeRed));
  85.                                  xCentro=(xInicio+xFin)/2,yCentro=(yInicio+yFin)/2)
  86.                 switch(codificador(tipoVorde)){
  87.                 case 0:case 15:return;// x <-nombrar_como.
  88.                 default:{
  89.                     if(xFin<Original.Width-2&&xInicio>0&&yFin<Original.Height-2&&yInicio>0){
  90.                         Drawing.SetPixel(xInicio,yInicio,Color.Blue);
  91.                         Drawing.SetPixel(xInicio,yFin,Color.Blue);
  92.                         Drawing.SetPixel(xFin,yInicio,Color.Blue);
  93.                         Drawing.SetPixel(xFin,yFin,Color.Blue);
  94.                         Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);
  95.                         if(esNegro(xCentro,yInicio-1)){yInicio--;
  96.                             if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}
  97.                             if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;}
  98.                             if(yFin<Original.Height-1&&esNegro(xCentro,yFin+1)){yFin++;}
  99.                         }else{
  100.                             if(yFin<Original.Height-1&esNegro(xCentro,yFin+1)){yFin++;
  101.                                 if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}
  102.                                 if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;}
  103.                             }else{
  104.                                 if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
  105.                                     if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}
  106.                                 }else{
  107.                                     if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}
  108.                                     else{Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);pictureBoxMuestra.Refresh();return;}
  109.                                 }
  110.                             }
  111.                         }
  112.                     }else{
  113.                        
  114.                         Point centro=new Point(xCentro,yCentro);
  115.                         int radio=xFin-xCentro;
  116.                         buttonMostrar.Text=radio.ToString()+",".ToString()+centro.ToString();buttonMostrar.Refresh();return;
  117.                     }/*
  118.                     if(xFin<Original.Width-2&&xInicio>0&&yFin<Original.Height-2&&yInicio>0){
  119.                         Drawing.SetPixel(xInicio,yInicio,Color.Blue);
  120.                         Drawing.SetPixel(xInicio,yFin,Color.Blue);
  121.                         Drawing.SetPixel(xFin,yInicio,Color.Blue);
  122.                         Drawing.SetPixel(xFin,yFin,Color.Blue);
  123.                         Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);
  124.                         if(esNegro(xCentro,yInicio-1)){yInicio--;
  125.                             if(yFin<Original.Height-1&&esNegro(xCentro,yFin+1)){yFin++;
  126.                                     if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
  127.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  128.                                     }else{
  129.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  130.                                     }
  131.                             }else{
  132.                                     if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
  133.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  134.                                     }else{
  135.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  136.                                     }
  137.                             }
  138.                         }else{
  139.                             if(yFin<Original.Height-1&esNegro(xCentro,yFin+1)){yFin++;
  140.                                     if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
  141.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  142.                                     }else{
  143.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  144.                                     }
  145.                             }else{
  146.                                     if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
  147.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
  148.                                     }else{
  149.                                         if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);pictureBoxMuestra.Refresh();return;}
  150.                                     }
  151.                             }
  152.                         }
  153.                     }else{
  154.                        
  155.                         Point centro=new Point(xCentro,yCentro);
  156.                         int radio=xFin-xCentro;
  157.                         buttonMostrar.Text=radio.ToString()+",".ToString()+centro.ToString();buttonMostrar.Refresh();return;
  158.                     }*/
  159.                 }break;
  160.             }
  161.         }
  162.         void ButtonAbrirMouseClick(object sender, MouseEventArgs e){
  163.  
  164.             openFileDialogImagen.ShowDialog();
  165.             pictureBoxMuestra.Image=Image.FromFile(openFileDialogImagen.FileName);
  166.             buttonMostrar.Enabled=true;
  167.    
  168.         }
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement