Advertisement
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.3.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;
- 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(xCentro,yCentro)&&(!Equals(Drawing.GetPixel(xCentro,yCentro),Color.OrangeRed));
- xCentro=(xInicio+xFin)/2,yCentro=(yInicio+yFin)/2)
- switch(codificador(tipoVorde)){
- case 0:case 15:return;// x <-nombrar_como.
- case 12:{// < 10 //patch
- Drawing.SetPixel(xInicio,yInicio,Color.Blue);
- Drawing.SetPixel(xInicio,yFin,Color.Blue);
- Drawing.SetPixel(xFin,yInicio,Color.Blue);
- Drawing.SetPixel(xFin,yFin,Color.Blue);//*/
- Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);//pictureBoxMuestra.Refresh();
- if(yInicio>=0&&esNegro(xCentro,yInicio-1)){yInicio--;
- if(yFin<Original.Height-1&&esNegro(xCentro,yFin+1)){yFin++;
- if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }else{
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }
- }else{
- if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }else{
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }
- }
- }else{
- if(yFin<Original.Height-1&esNegro(xCentro,yFin+1)){yFin++;
- if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }else{
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }
- }else{
- if(xInicio>=0&&esNegro(xInicio-1,yCentro)){xInicio--;
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{}
- }else{
- if(xFin<Original.Width-1&&esNegro(xFin+1,yCentro)){xFin++;}else{Drawing.SetPixel(xCentro,yCentro,Color.OrangeRed);pictureBoxMuestra.Refresh();buttonMostrar.Text=xCentro.ToString()+",".ToString()+yCentro.ToString();buttonMostrar.Refresh();return;}
- }
- }
- }
- }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+1<xFin-1,yInicio+1<yFin-1};
- 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
Advertisement