C/Visual C - cambiar tamaño de un picture box

 
Vista:

cambiar tamaño de un picture box

Publicado por sergio (1 intervención) el 15/07/2002 01:04:38
Estoy trabajando en c# pero en c++ supongo que debe de ser similar.
Quiero cambiar el tamaño de un picture box en tiempo de ejecucion con el mouse.
En ortras palabras quiero hacer en tiempo de diseño lo que se puede hacer con el editor, pinchar en el borde del control y agrandarlo o achicarlo.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cambiar el tamaño de un PictureBox en tiempo de ejecución con el mouse

Publicado por Alejandro (938 intervenciones) el 11/03/2025 17:30:25
Para permitir que un `PictureBox` sea redimensionable en tiempo de ejecución, puedes seguir estos pasos:

1. Crear un nuevo control derivado: Crea una clase que derive de `PictureBox` y agrega la funcionalidad de redimensionamiento.

2. Manejar eventos del mouse: Implementa los eventos del mouse para detectar cuando el usuario hace clic y arrastra en los bordes del `PictureBox`.

3. Redimensionar el control: Ajusta las propiedades `Width` y `Height` del `PictureBox` según el movimiento del mouse.

Aquí tienes un ejemplo básico de cómo podrías implementar esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <windows.h>
#include <commctrl.h>
 
class ResizablePictureBox : public PictureBox {
private:
    bool resizing;
    POINT lastMousePos;
 
public:
    ResizablePictureBox() : resizing(false) {}
 
    void OnMouseDown(int x, int y) {
 // Comprobar si el mouse está en el borde del PictureBox
        if (IsMouseOnBorder(x, y)) {
            resizing = true;
            lastMousePos.x = x;
            lastMousePos.y = y;
        }
    }
 
    void OnMouseMove(int x, int y) {
        if (resizing) {
            int deltaX = x - lastMousePos.x;
            int deltaY = y - lastMousePos.y;
 
            // Ajustar el tamaño del PictureBox
            this->Width += deltaX;
            this->Height += deltaY;
 
            lastMousePos.x = x;
            lastMousePos.y = y;
        }
    }
 
    void OnMouseUp() {
        resizing = false;
    }
 
private:
    bool IsMouseOnBorder(int x, int y) {
        // Lógica para determinar si el mouse está en el borde
        return (x >= this->Width - 10 && y >= this->Height - 10); // Ajusta el tamaño del borde según sea necesario
    }
};

Notas:


- Asegúrate de registrar los eventos del mouse (`OnMouseDown`, `OnMouseMove`, `OnMouseUp`) en tu aplicación para que la clase `ResizablePictureBox` funcione correctamente.
- Este es un ejemplo básico y puede requerir ajustes según tus necesidades específicas y la estructura de tu aplicación.

¡Buena suerte con tu proyecto, Sergio!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar