Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - /*
 - * Created by SharpDevelop.
 - * User: fhrl0
 - * Date: 14/09/2019
 - * Time: 02:04 p. m.
 - * Vertion: 0.2.1
 - * To change this template use Tools | Options | Coding | Edit Standard Headers.
 - */
 - using System;
 - using System.Collections.Generic;
 - using System.Drawing;
 - using System.Windows.Forms;
 - namespace Actividad_2{
 - /// <summary>
 - /// Description of MainForm.
 - /// </summary>
 - public partial class MainForm : Form{
 - Bitmap Original,Drawing;
 - public MainForm(){
 - //
 - // The InitializeComponent() call is required for Windows Forms designer support.
 - //
 - InitializeComponent();
 - //
 - // TODO: Add constructor code after the InitializeComponent() call.
 - //
 - }
 - int codificador(bool[]arregloBits){//fixed
 - int abstracto=0;
 - for(int i=0;i<arregloBits.Length;i++){
 - abstracto=abstracto*2;
 - if(arregloBits[i])
 - abstracto++;
 - }//else es inesesario incrmentar.
 - return abstracto;
 - }
 - bool esNegro(int x,int y){
 - return(int)Original.GetPixel(x,y).R
 - +(int)Original.GetPixel(x,y).G
 - +(int)Original.GetPixel(x,y).B<(int)383;
 - }
 - void centra(int xInicio,int yInicio,int xFin,int yFin){//163 >> 1
 - buttonMostrar.Text=yFin.ToString();
 - Drawing.SetPixel(xInicio,yInicio,Color.Yellow);
 - for(bool[]sentencias={esNegro(xInicio,yInicio),esNegro(xFin,yFin)};true;){
 - switch(codificador(sentencias)){
 - case 0:{//00?
 - }return;
 - case 1:{//10?
 - //yFin=yFin+i;
 - }return;
 - case 2:{//01?
 - //yFin=yFin-i;
 - }return;
 - case 3:{//11?
 - //yFin=yFin-i;
 - }return;
 - default:return;
 - };
 - }
 - }
 - void detecta(int xInicio,int yInicio,int xFin,int yFin){//Drawing.SetPixel(xInicio,yInicio,Color.BlueViolet);//para analisis.//int xCentro=(xInicio+xFin)/2,yCentro=(yInicio+yFin)/2;
 - for(bool[]tipoVorde={esNegro(xInicio,yInicio),esNegro(xFin,yInicio),
 - esNegro(xInicio,yFin),esNegro(xFin,yFin)};
 - esNegro((xInicio+xFin)/2,(yInicio+yFin)/2);)
 - switch(codificador(tipoVorde)){
 - case 0:case 15:return;// x <-nombrar_como.
 - case 10:{// <
 - int xCentro=(xInicio+xFin)/2;
 - //Drawing.SetPixel(xCentro,(yInicio+yFin)/2,Color.OrangeRed);
 - if(esNegro(xCentro,yInicio-1)){yInicio--;
 - if(esNegro(xCentro,yFin+1)){yFin++;
 - }else{
 - }
 - }else{
 - if(esNegro(xCentro,yFin+1)){yFin++;
 - }else{
 - Drawing.SetPixel(xCentro,(yInicio+yFin)/2,Color.OrangeRed);
 - //Drawing.SetPixel((xInicio+xFin)/2,yInicio,Color.OrangeRed);
 - //Drawing.SetPixel((xInicio+xFin)/2,yFin,Color.OrangeRed);
 - return;
 - }
 - }
 - //buttonMostrar.Text=xInicio.ToString();
 - //buttonMostrar.BackColor=Color.WhiteSmoke;
 - //buttonMostrar.Refresh();System.Threading.Thread.Sleep(200);//xCentro=(xInicio+xFin)/2;
 - //xInicio=(xInicio+xFin)/2;
 - //buttonMostrar.Text=xInicio.ToString();
 - //buttonMostrar.BackColor=Color.White;
 - //buttonMostrar.Refresh();System.Threading.Thread.Sleep(200);
 - /*Drawing.SetPixel(xInicio,yInicio,Color.OrangeRed);
 - Drawing.SetPixel(xInicio,yFin,Color.OrangeRed);
 - Drawing.SetPixel(xFin,yInicio,Color.OrangeRed);
 - Drawing.SetPixel(xFin,yFin,Color.OrangeRed);*/
 - //pictureBoxMuestra.Refresh();
 - /*if(esNegro(xInicio,yInicio-1)){yInicio--;
 - if(esNegro(xInicio,yFin+1))yFin++;
 - }else{
 - if(esNegro(xInicio,yFin+1))yFin++;
 - else{
 - yInicio=(yInicio+yFin)/2;
 - //yCentro=(yInicio+yFin)/2;
 - //yInicio=(yInicio+yFin)/2;//no detecto el conflicto de usar yInicio en ves de yCentro,pero funciona con yCentro
 - Drawing.SetPixel(xInicio,yInicio,Color.Yellow);
 - //Drawing.SetPixel(xInicio,yFin,Color.OrangeRed);
 - pictureBoxMuestra.Refresh();
 - for(xInicio=(xInicio-xFin)+((yInicio+yFin)/2),yInicio=(yInicio+yFin)/2;0<xInicio&&esNegro(xInicio,yInicio);xInicio--){
 - Drawing.SetPixel(xInicio,yInicio,Color.OrangeRed);
 - }
 - return;
 - }
 - }*/
 - //pictureBoxMuestra.Refresh();
 - /*for(Centro_x=1;!esNegro(xInicio+Centro_x,yInicio)&&(xInicio+Centro_x<Original.Width-1);Centro_x++){
 - Drawing.SetPixel(x+Centro_x,y,Color.DarkMagenta);
 - }//int Vertical=0;
 - Centro_x/=2;//Drawing.SetPixel(x+Centro_x,y,Color.DarkViolet);
 - for(j=0;esNegro(xInicio+Centro_x,yInicio-j);j++)Drawing.SetPixel(x+Centro_x,y+j,Color.DarkRed);
 - for(i=0;esNegro(xInicio+Centro_x,yInicio+i);i++)Drawing.SetPixel(x+Centro_x,y-i,Color.DarkRed);
 - i=(i+j)/2;
 - j=i-j;
 - Drawing.SetPixel(xInicio+Centro_x,yInicio+j,Color.White);
 - pictureBoxMuestra.Refresh();*/
 - }break;//
 - //return;
 - /*
 - case 2:case 11:{/// L
 - Drawing.SetPixel(x,y,Color.Red);
 - for(;esNegro(x-n,y+n)
 - &&(x-n>=0)
 - &&(y+n<Original.Width);n++)
 - Drawing.SetPixel(x-n,y+n,Color.Blue);
 - return;
 - }
 - case 3:{/// v
 - Drawing.SetPixel(x,y,Color.Red);
 - for(;esNegro(x,y+n)
 - &&(y+n<Original.Width);n++)
 - Drawing.SetPixel(x,y+n,Color.Blue);
 - return;
 - }
 - case 1:case 7:{// _|
 - Drawing.SetPixel(x,y,Color.Red);
 - /*for(;esNegro(x+n,y+n)
 - &&(y+n<Original.Width)
 - &&(x+n<Original.Height);n++)
 - Drawing.SetPixel(x+n,y+n,Color.Blue);
 - return;
 - }
 - case 5:{// >
 - Drawing.SetPixel(x,y,Color.Red);
 - /*for(;(esNegro(x+n,y))
 - &&(x+n<Original.Height);n++)
 - Drawing.SetPixel(x+n,y,Color.Blue);
 - return;
 - }
 - case 4:case 13:{// ¬
 - Drawing.SetPixel(x,y,Color.Red);
 - for(;esNegro(x+n,y-n)
 - &&((x+n<Original.Height)
 - &&(y-n>=0));n++)
 - Drawing.SetPixel(x+n,y-n,Color.Blue);
 - return;
 - }
 - case 12:{// ^
 - Drawing.SetPixel(x,y,Color.Red);
 - for(;esNegro(x,y-n)
 - &&(y-n>=0);n++)
 - Drawing.SetPixel(x,y-n,Color.Blue);
 - return;
 - }
 - case 8:case 14:{// F
 - Drawing.SetPixel(x,y,Color.Red);
 - for(n=0;n>9;n++)
 - Drawing.SetPixel(x-n,y-n,Color.Red);
 - for(;esNegro(x-n,y-n)
 - &&((x-n>=0)
 - &&(y-n>=0));n++)
 - Drawing.SetPixel(x-n,y-n,Color.Blue);
 - return;
 - }*/
 - default:return;
 - //Drawing.SetPixel(x,y,Color.Red);
 - //break;ruido
 - }
 - }
 - void analizar(int xInicio,int yInicio,int xFin,int yFin){//dispose objetos//principio de animacion
 - int xCentro=(xInicio+xFin)/2,
 - yCentro=(yInicio+yFin)/2;
 - detecta(xInicio,yInicio,xFin,yFin);
 - //System.Threading.Thread.Sleep(10);
 - bool[]sentencias={xInicio+2<xFin-2,yInicio+2<yFin-2};
 - switch(codificador(sentencias)){//enum{}?
 - case 1://01
 - analizar(xInicio,yInicio,xFin,yCentro-1);
 - analizar(xInicio,yCentro,xFin,yFin);
 - return;
 - case 2://10
 - analizar(xInicio,yInicio,xCentro-1,yFin);analizar(xCentro,yInicio,xFin,yFin);
 - return;
 - case 3://11
 - //a por definir descarte
 - analizar(xInicio,yInicio,xCentro-1,yCentro-1);analizar(xCentro,yInicio,xFin,yCentro-1);
 - analizar(xInicio,yCentro,xCentro-1,yFin); analizar(xCentro,yCentro,xFin,yFin);
 - return;
 - default:return;//00
 - }
 - }
 - void ButtonMostrarClick(object sender, EventArgs e){
 - if(pictureBoxMuestra.Image==null){
 - }else{
 - Original=(Bitmap)pictureBoxMuestra.Image;
 - Drawing=(Bitmap)Original;
 - analizar(0,0,Original.Width-1,Original.Height-1);
 - pictureBoxMuestra.Refresh();
 - //pictureBoxMuestra.Image=Drawing;
 - }
 - }
 - void ButtonAbrirMouseClick(object sender, MouseEventArgs e){
 - openFileDialogImagen.ShowDialog();
 - pictureBoxMuestra.Image=Image.FromFile(openFileDialogImagen.FileName);
 - }
 - }
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment