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.
- * Version: 0.2.0
- * 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
- int i=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
Advertisement