Casos de uso de programación con ratón en C/C++ | conjunto 2

En este artículo, discutiremos algunos casos de uso de la programación del mouse :

Restringir el puntero del mouse :

El puntero del mouse se puede restringir en un rectángulo particular. La idea es crear una función llamada restrictmouse() que tome cuatro parámetros que contengan la coordenada X y la coordenada Y. El primer punto menciona la parte superior del rectángulo y el segundo punto menciona la parte inferior del rectángulo. A continuación se muestran las funciones utilizadas para el mismo:

  • initmouse(): se usa para inicializar el mouse.
  • showmouse(): muestra el puntero del mouse en la pantalla de salida.
  • restrictmouse(): se usa para establecer el límite horizontal y vertical del puntero del mouse configurando los siguientes parámetros. AX = 7 para horizontal y AX = 8 para vertical.

A continuación se muestra el programa para el mismo:

C

// C program to restrict the mouse
// pointer
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to restrict the mouse
// pointers
void restrictMouse(int x1, int y1,
                   int x2, int y2)
{
    // Set Horizontal limit
    in.x.ax = 7;
    in.x.cx = x1;
    in.x.dx = x2;
    int86(0X33, &in, &out);
  
    // Set Vertical limit
    in.x.ax = 8;
    in.x.cx = y1;
    in.x.dx = y2;
    int86(0X33, &in, &out);
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    // Get the status of the mouse
    status = initMouse();
  
    // Check if mouse is available or not
    if (status == 0)
        printf("Mouse support "
               "not available.\n");
    else {
        showMouse();
  
        // Draw rectangle for displaying
        // the boundary
        rectangle(100, 70, 400, 200);
        restrictMouse(100, 70, 400, 200);
    }
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

C++

// C++ program to restrict the mouse
// pointer
#include <bits/stdc++.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
using namespace std;
  
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to restrict the mouse
// pointers
void restrictMouse(int x1, int y1,
                   int x2, int y2)
{
    // Set Horizontal limit
    in.x.ax = 7;
    in.x.cx = x1;
    in.x.dx = x2;
    int86(0X33, &in, &out);
  
    // Set Vertical limit
    in.x.ax = 8;
    in.x.cx = y1;
    in.x.dx = y2;
    int86(0X33, &in, &out);
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    // Get the status of the mouse
    status = initMouse();
  
    // Check if mouse is available or not
    if (status == 0)
        cout << "Mouse support "
             << "not available.\n";
    else {
        showMouse();
  
        // Draw rectangle for displaying
        // the boundary
        rectangle(100, 70, 400, 200);
        restrictMouse(100, 70, 400, 200);
    }
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

 
 Producción:
 

mouse programming in C/C++ 1

Dibujo a mano alzada :

 El siguiente programa hace uso de algunas funciones secundarias, que ya se discutieron anteriormente, y muestra cómo se pueden usar para escribir programas útiles como el dibujo a mano alzada. A continuación se muestran las funciones utilizadas: 

  • initmouse(): se usa para inicializar el mouse.
  • showmouse(): muestra el puntero del mouse en la pantalla de salida.
  • hidemouse(): se usa para ocultar el mouse mientras se dibuja.
  • getmouseposition(): obtiene la ubicación actual del puntero y dibuja la línea en consecuencia.

A continuación se muestra el programa para el mismo: 

C

// C program to perform Free Hand Drawing
// using mouse programming
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to hide the mouse
// pointer using graphics
void hideMouse()
{
    // Set AX=2 to hide mouse
    in.x.ax = 2;
    int86(0X33, &in, &out);
}
  
// Function to get the exact position
// of the mouse
getMousePosition(int* x, int* y,
                 int* click)
{
    in.x.ax = 3;
  
    // Get the coordinates
    int86(0x33, &in, &out);
  
    // Update the coordinates
    *x = out.x.cx;
    *y = out.x.dx;
    *click = out.x.bx & 1;
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm,x1,y1,x2,y2;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    initMouse();
  
    // kbhit If a key has been pressed
    // then it returns a non zero value
    // otherwise returns zero(false)
    while (!kbhit()) {
  
        // Show the mouse pointer
        showMouse();
  
        // Get the mouse position
        getMousePosition(&x1, &y1, &click);
        x2 = x1;
        y2 = y1;
  
        // When mouse is clicked
        while (click == 1) {
            hideMouse();
  
            // Draw line
            line(x1, y1, x2, y2);
            x1 = x2;
            y1 = y2;
  
            // Get the mouse position
            getMousePosition(&x2, &y2, &click);
        }
    }
  
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

C++

// C++ program to perform Free Hand
// Drawing using mouse programming
#include <bits/stdc++.h>
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
using namespace std;
  
union REGS in, out;
  
// Function to initialize the mouse
// pointer using graphics
int initMouse()
{
    in.x.ax = 0;
    int86(0X33, &in, &out);
  
    return out.x.ax;
}
  
// Function to display the mouse
// pointer using graphics
void showMouse()
{
    in.x.ax = 1;
    int86(0X33, &in, &out);
}
  
// Function to hide the mouse
// pointer using graphics
void hideMouse()
{
    // Set AX=2 to hide mouse
    in.x.ax = 2;
    int86(0X33, &in, &out);
}
  
// Function to get the exact position
// of the mouse
getMousePosition(int* x, int* y,
                 int* click)
{
    in.x.ax = 3;
  
    // Get the coordinates
    int86(0x33, &in, &out);
  
    // Update the coordinates
    *x = out.x.cx;
    *y = out.x.dx;
    *click = out.x.bx & 1;
}
  
// Driver Code
void main()
{
    int status, i, gd = DETECT, gm;
  
    // Initialize graphics
    initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");
  
    initMouse();
  
    // kbhit If a key has been pressed
    // then it returns a non zero value
    // otherwise returns zero(false)
    while (!kbhit()) {
  
        // Show the mouse pointer
        showMouse();
  
        // Get the mouse position
        getMousePosition(&x1, &y1, &click);
        x2 = x1;
        y2 = y1;
  
        // When mouse is clicked
        while (click == 1) {
            hideMouse();
  
            // Draw line
            line(x1, y1, x2, y2);
            x1 = x2;
            y1 = y2;
  
            // Get the mouse position
            getMousePosition(&x2, &y2, &click);
        }
    }
  
    getch();
  
    // Close the graphics
    closegraph();
  
    return 0;
}

 
 Producción:
 

Free hand drawing 1

Free hand drawing 2

Publicación traducida automáticamente

Artículo escrito por shubhamp338 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *