Para poder usar las dos en un solo porgrama ejemplo he utilizado el teclado para distinguir uno de otro al dibujar. Si se pulsa el teclado se dibujará un fill rectangle. Si no se dibujará un rectangle.
La selección de los vertices se hace igual en en los caso anteriores, eligiendo dos puntos con el ratón.
Igualmente incremeto el color con cada recuadro, para que quede más vistoso.
El ejemplo compilado lo podeis descargar aquí
EJ_REC.ASM
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.
include main.mac
include stdio.mac
include mouse.mac
include graphics.mac
.model compact,pascal
.stack 200
.data
x0 dw 0
y0 dw 0
x1 dw 0
y1 dw 0
color dw 1
.code
principal proc far
main
modovideo 12h ;inicia graficos
resmouse ;reinicia ratón
mouse on ; activa rarón
punto1:
getmouse ;espera ESTÉ SIN PULSAR
cmp ax,0
jne punto1
pulsar1:
getmouse ;verifica espera pulsación raton
cmp ax,2 ;salir?
jne sig1
jmp fuera
sig1:
cmp ax,1 ;boton izquierdo?
jne pulsar1
getmousex
mov x0,ax
getmousey
mov y0,ax
punto2:
getmouse ;espera soltar
cmp ax,0
jne punto2
pulsar2:
getmouse ;verifica espera pulsación raton
cmp ax,2 ;salir?
je fuera
cmp ax,1 ;boton izquierdo?
jne pulsar2
getmousex
mov x1,ax
getmousey
mov y1,ax
mov ax,color
inc ax
and ax,0fh
mov color,ax
mouse off
kbhit ;comprueba si se ha pulsado el teclado
jz rectangulo
mov ah,0ch ; vacio el bufer de teclado
int 21h
;si es así dibuja rectangulos llenos
fillrectangle x0,y0,x1,y1,color
mouse on
jmp punto1
rectangulo:
rectangle x0,y0,x1,y1,color
mouse on
jmp punto1
fuera:
modovideo t80col
resmouse
mouse off
exit 0
principal endp
end