DELPHI de Borland Company (ahora rebautizada como INPRISE Company) es actualmente el programa de Windows más conveniente.
Una de las herramientas de planificación. Mucha gente piensa que DELPHI aparece como una herramienta de desarrollo de bases de datos. De hecho, DELPHI.
Se pueden desarrollar programas eficientes de Windows a una velocidad vertiginosa.
Ahora usaremos DELPHI para escribir un programa práctico de copia de pantalla. Mira, la imagen de abajo.
Este es un ejemplo de cómo copiar la pantalla regional después de ejecutar el programa programado. ¡Nada mal!
Los talentosos diseñadores de Borland Company utilizan el objeto lienzo (Tcanvas) para encapsular la mayoría de los gráficos en Windows.
Función de salida, que nos permite tratar la pantalla de Windows de una forma más intuitiva,
Y no tiene que preocuparse por el dolor de cabeza de las funciones API de Windows. El siguiente programa corto puede realizar todo el
Se copia la imagen de la pantalla.
var // declaración de variable
Pantalla completa: Tbitmap;
Lienzo de pantalla completa: TCanvas;
CC:HDC;
//------------------------------------------------ ----------
DC := GetDC (0); //Obtiene el DC de la pantalla, el parámetro 0 se refiere a la pantalla
FullscreenCanvas := TCanvas.Create; //Crea un objeto CANVAS
FullscreenCanvas.Handle := DC; //Asigna el DC de la pantalla a HANDLE
Pantalla completa.Canvas.CopyRect
(Rect (0, 0, pantalla.Ancho,pantalla.Alto),
lienzo de pantalla completa,
Rect (0, 0, Ancho.Pantalla, Alto.Pantalla));
//Copiar toda la pantalla a BITMAP
FullscreenCanvas.Free; //Liberar objeto CANVAS
LiberarDC (0, DC); //Liberar DC
// El objeto SCREEN es un objeto de pantalla predefinido por DELPHI, solo úselo directamente.
Después de leer el código anterior, encontrará que, de hecho, es muy sencillo escribir un programa de copia de pantalla con DELPHI.
Por supuesto, es necesario escribir un programa práctico de copia de pantalla. El código anterior por sí solo no es suficiente. Hablemos de ello a continuación.
Las siguientes son las principales ideas de programación:
1. Implementación de copia a pantalla completa.
Primero oculte el programa de copia de pantalla y, después de un cierto período de tiempo, utilice el programa anterior para realizar la copia de pantalla.
Copiar.
2. Implementación de copia regional.
Para lograr la copia de área, debe utilizar un pequeño truco. Primero llame al programa de copia de pantalla completa para copiar la pantalla completa.
descargar y luego mostrar la imagen copiada en la pantalla y luego permitir que el usuario
Seleccione el área requerida y finalmente copie el área seleccionada por el usuario.
Implementación de programación:
1. Primero abra un proyecto con DELPHI3.
2. Coloque un componente TPANEL en el FORMULARIO, establezca ALIGN=ALTOP y luego seleccione la barra de componentes ADICIONAL
TSCROLLBOX, colóquelo en el FORMULARIO, establezca ALIGN=ALCLIENT y luego coloque un
Objeto IMAGEN.
3. Coloque 4 botones en el PANEL, a saber, PANTALLA COMPLETA, REGINAR, GUARDAR y SALIR.
4. Primero haga lo que sea fácil de hacer y escriba el código en el evento CLIC del botón SALIR.
procedimiento TForm1.ExitClick(Remitente: TObject);
comenzar
cerca;
fin;
5. Lo siguiente es realizar una copia en pantalla completa. Coloque un temporizador TTIMER en FROM y configure ENABLED en.
FALSO, INTERVALO está establecido en 500, lo que significa que se activa una vez cada medio segundo. Haga doble clic en el componente TIMER y escriba lo siguiente
código.
procedimiento TForm1.Timer1Timer(Remitente: TObject);
var
Pantalla completa: Tbitmap;
Lienzo de pantalla completa: TCanvas;
CC:HDC;
comenzar
timer1.Enabled:=false; //Cancelar el reloj
Pantalla completa := TBitmap.Create; //Crea un BITMAP para almacenar imágenes
Ancho de pantalla completa: = ancho de pantalla;
Pantalla completa.Altura:= pantalla.Altura;
DC := GetDC (0); //Obtiene el DC de la pantalla, el parámetro 0 se refiere a la pantalla
FullscreenCanvas := TCanvas.Create; //Crea un objeto CANVAS
FullscreenCanvas.Handle := DC;
Pantalla completa.Canvas.CopyRect
(Rect (0, 0, pantalla.Ancho, pantalla.Alto), pantalla completaCanvas,
Rect (0, 0, Ancho.Pantalla, Alto.Pantalla));
//Copiar toda la pantalla a BITMAP
FullscreenCanvas.Free; //Liberar objeto CANVAS
LiberarDC (0, DC); //Liberar DC
//******************************
image1.picture.Bitmap:=fullscreen;//Asignar la imagen copiada al objeto IMAGEN
imagen1.Ancho:=pantalla completa.Ancho;
imagen1.Altura:=pantalla completa.Altura;
fullscreen.free; //Liberar mapa de bits
form1.WindowState:=wsNormal; //Restaurar el estado de la ventana
form1.show; //Ventana de visualización
messagebeep(1); //BEEP suena una vez para informar que la imagen ha sido capturada.
fin;
6. El siguiente código en el botón PANTALLA COMPLETA es muy simple.
procedimiento TForm1.FullscreenClick (Remitente: TObject);
comenzar
form1.WindowState:=wsMinimized //Minimiza la ventana del programa
form1.hide; //Ocultar el programa
timer1.enabled:=true; //Abre el temporizador
fin;
7. Después de copiar la imagen, por supuesto hay que guardarla. Entra en juego el botón GUARDAR. Escribimos lo siguiente:
Descarga el código.
procedimiento TForm1.Save1Click (Remitente: TObject);
comenzar
si savedialog1.Ejecutar entonces
comenzar
form1.Image1.Picture.SaveToFile(savedialog1.nombredearchivo)
fin;
fin;
8. La siguiente es la implementación de la copia de zona. Luego, cree un FORMULARIO nuevo y establezca BorderStype en bsNone para que se pueda mostrar.
Para pantalla completa, coloque un componente TIMAGE en él, configure ALIGN en ALCLIENT y coloque un TTIMER
widget, el programa del widget TIMER es muy similar al anterior, porque lo primero que debe lograr es copiar en pantalla completa.
cauri.
procedimiento TForm2.Timer1Timer(Remitente: TObject);
var
Pantalla completa: Tbitmap;
Lienzo de pantalla completa: TCanvas;
CC:HDC;
comenzar
temporizador1.Enabled:=falso;
Pantalla completa := TBitmap.Create;
Ancho de pantalla completa: = ancho de pantalla;
Pantalla completa.Altura:= pantalla.Altura;
CC := ObtenerDC (0);
FullscreenCanvas := TCanvas.Create;
FullscreenCanvas.Handle := DC;
Pantalla completa.Canvas.CopyRect (Rect
(0, 0, ancho de pantalla, alto de pantalla), lienzo de pantalla completa,
Rect (0, 0, Ancho.Pantalla, Alto.Pantalla));
FullscreenCanvas.Gratis;
LanzamientoDC (0, DC);
imagen1.imagen.Mapa de bits:=pantalla completa;
imagen1.Ancho:=pantalla completa.Ancho;
imagen1.Altura:=pantalla completa.Altura;
pantalla completa.gratis;
form2.WindowState:=wsMaximized;
formulario2.mostrar;
mensaje bip(1);
doblarx:=-1;
plegable:=-1;
image1.Canvas.Pen.mode:=pmnot; //El modo de lápiz está invertido
image1.canvas.pen.color:=clblack; //El bolígrafo es negro
image1.canvas.brush.Style:=bsclear; //Pincel en blanco
bandera:=verdadero;
fin;
9. Hay dos programas de eventos en el componente TIMAGE que deben escribirse, uno es ONMOUSEDOWN y el otro
Es EN MOVIMIENTO DEL RATÓN.
10. Puede volver a consultar la idea de copiar regiones. En este momento, ya lo hemos hecho.
se obtiene y también se muestra en la pantalla. Presione el botón izquierdo del mouse para ser el origen del área. Luego mueva el mouse a.
Hay un rectángulo entre el origen y el mouse. Cambia a medida que se mueve el mouse. Presione el mouse nuevamente.
Haga clic en el botón izquierdo del objetivo. En este momento, el área contenida por el rectángulo es la imagen que queremos obtener.
11. Entonces MOUSEDOWN tiene dos procesamientos de respuesta; consulte el siguiente procedimiento.
procedimiento TForm2.Image1MouseDown
(Remitente: TObject; Botón: TMouseButton;
Mayús: TShiftState; X, Y: Entero);
var
ancho,alto:entero;
nuevo mapa de bits: Tbitmap;
comenzar
if (trace=false) entonces // TRACE indica si se está rastreando el mouse
comenzar // Haga clic con el botón izquierdo del mouse por primera vez para comenzar a rastrear el mouse.
bandera:=falso;
con image1.canvas hacer
comenzar
moverA(foldx,0);
LineTo(foldx,screen.height);
mover a(0,plegadamente);
lineto(pantalla.ancho,foldy);
fin;
x1:=x;
y1:=y;
viejox:=x;
viejo:=y;
rastro:=verdadero;
image1.Canvas.Pen.mode:=pmnot; //El modo de lápiz está invertido
//Dibuja el rectángulo nuevamente en el lugar original, lo que equivale a borrar el rectángulo.
image1.canvas.pen.color:=clblack; //El bolígrafo es negro
image1.canvas.brush.Style:=bsclear;//Pincel en blanco
fin
demás
comenzar // El segundo clic indica que se ha obtenido el rectángulo.
//Cópialo en el componente IMAGEN en FORM1.
x2:=x;
y2:=y;
rastro:=falso;
imagen1.canvas.rectangle(x1,y1,oldx,oldy);
ancho:=abs(x2-x1);
altura:=abs(y2-y1);
form1.image1.Width:=Ancho;
form1.image1.Height:=Altura;
nuevo mapa de bits:=Tbitmap.create;
nuevo mapa de bits.ancho: = ancho;
nuevo mapa de bits.altura:=altura;
nuevo mapa de bits.Canvas.CopyRect
(Rect (0, 0, ancho, alto), form2.image1.canvas,
Rect (x1, y1,x2,y2)); //Copiar
form1.image1.picture.bitmap:=newbitmap; //Ponlo en la IMAGEN del FORMULARIO
nuevo mapa de bits.gratis;
formulario2.ocultar;
formulario1.mostrar;
fin;
fin;
12. El procesamiento de MOUSEMOVE consiste en dibujar y borrar continuamente rectángulos entre el origen y la posición actual del mouse.
Excepto rectángulo.
procedimiento TForm2.Image1MouseMove
(Remitente: TObject; Mayús: TShiftState; X,
Y: Entero);
comenzar
si trace=true entonces //¿Estás siguiendo el mouse?
comenzar //Sí, borra el rectángulo antiguo y dibuja uno nuevo
con image1.canvas hacer
comenzar
rectángulo(x1,y1,viejox,viejo);
Rectángulo(x1,y1,x,y);
viejox:=x;
viejo:=y;
fin;
fin
else if flag=true entonces //Dibuja una cruz donde está el mouse
comenzar
con image1.canvas hacer
comenzar
moveTo(foldx,0); //Borrar la cruz anterior
LineTo(foldx,screen.height);
mover a(0,plegadamente);
lineto(pantalla.ancho,foldy);
moveTo(x,0); //Dibujar una nueva cruz
LíneaA(x,pantalla.altura);
mover a(0,y);
lineto(pantalla.ancho,y);
doblarx:=x;
plegable:=y;
fin;
fin;
fin;
13. Bien, volvamos a escribir el código para el botón REGIÓN.
procedimiento TForm1.RegionClick(Remitente: TObject);
comenzar
formulario1.Ocultar;
formulario2.ocultar;
form2.Timer1.Enabled:=verdadero;
fin;
Bien, finalmente lo terminamos con éxito. ¡Ejecutémoslo nuevamente y copiemos la hermosa pantalla! Mirar
DELPHI no solo es una excelente herramienta de desarrollo de bases de datos, sino también una excelente herramienta para escribir en WINDOWS.
Un buen ayudante para el programa. No dejemos de admirar: ¡Gran DELPHI!
Jia Xuejie, Youhe Lane, ciudad de Ningbo