Esempio n. 1
0
        private void lineasSegmentadasPictureBox_MouseClick(object sender, MouseEventArgs e)
        {
            int linea = textoEscalado.GetLinea(e.Y, e.X);

            textoEscalado.LiberarTextoManejado();

            if (fusionar)
            {
                if (lineaSeleccionada < linea)
                {
                    copiaTexto.Fusionar(lineaSeleccionada, linea);
                }
                else
                {
                    copiaTexto.Fusionar(linea, lineaSeleccionada);
                }
            }

            textoEscalado = copiaTexto.Copia();
            textoEscalado.EscalacionLineal(((double)lineasSegmentadasPictureBox.Size.Width) / copiaTexto.GetAncho(), ((double)lineasSegmentadasPictureBox.Size.Height) / copiaTexto.GetAlto());

            if (!fusionar && linea != -1 && linea != lineaSeleccionada)
            {
                textoEscalado.PintarLinea(linea);
                lineaSeleccionada = linea;
            }
            else
            {
                lineaSeleccionada = -1;
            }

            IntPtr ptrDIB;      //Puntero al DIB
            IntPtr ptrMapaBits; //Puntero al mapa de bits en sí (nos saltamos el bitmapinfoheader y la paleta, si la hay)

            unsafe              //Zona no segura (transformación de punteros C++ a C#)
            {
                ptrDIB = (IntPtr)textoEscalado.GetDIB();

                ptrMapaBits = (IntPtr)textoEscalado.GetMapaBits();
            }

            lineasSegmentadasPictureBox.Image = PrincipalForm.BitmapFromDIB(ptrDIB, ptrMapaBits);

            fusionar = false;
        }