C/Visual C - "Bocadillos" en VC

 
Vista:

"Bocadillos" en VC

Publicado por Oscar (1 intervención) el 10/09/2001 14:10:10

Estoy intentando hacer una mascota para el escritorio en VC++ y necesitaria poder presentar bocadillos de texto (como en los comics) con mensajes de texto de distintos tamaños. Necesito que sea algo general y que el bocadillo se adecue al texto que contiene. No me valen controles externos. ¿Se os ocurre algo?.

Saludos y muchas gracias anticipadas.

Oscar
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

Creación de bocadillos de texto en una mascota para el escritorio

Publicado por Alejandro (913 intervenciones) el 11/10/2024 23:59:24
Para crear bocadillos de texto en tu aplicación de Visual C++ sin usar controles externos, puedes seguir estos pasos:

1. Crear una clase para el bocadillo



Define una clase que maneje la creación y el dibujo del bocadillo. Esta clase puede calcular el tamaño del bocadillo en función del texto que contiene.

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
class SpeechBubble {
public:
    SpeechBubble(const std::string& text, HDC hdc) : m_text(text) {
        // Calcular el tamaño del texto
        SIZE textSize;
        GetTextExtentPoint32(hdc, m_text.c_str(), m_text.length(), &textSize);
 
        // Definir el tamaño del bocadillo
        m_width = textSize.cx + 20; // Margen
        m_height = textSize.cy + 20; // Margen
    }
 
    void Draw(HDC hdc, int x, int y) {
        // Dibujar el bocadillo
        RECT rect = { x, y, x + m_width, y + m_height };
        FillRect(hdc, &rect, (HBRUSH)(COLOR_WINDOW + 1));
 
        // Dibujar el texto
        TextOut(hdc, x + 10, y + 10, m_text.c_str(), m_text.length());
 
        // Aquí puedes agregar código para dibujar una "punta" del bocadillo si lo deseas
    }
 
private:
    std::string m_text;
    int m_width;
    int m_height;
};

2. Usar la clase en tu aplicación



Cuando necesites mostrar un bocadillo, crea una instancia de `SpeechBubble` y llama a su método `Draw` en el contexto de dispositivo (HDC) de tu ventana.

1
2
3
4
void OnPaint(HDC hdc) {
    SpeechBubble bubble("¡Hola, soy tu mascota!", hdc);
    bubble.Draw(hdc, 50, 50); // Posición del bocadillo
}

3. Manejar el dibujo del bocadillo



Asegúrate de que el método `OnPaint` se llame correctamente en tu aplicación. Esto se puede hacer en respuesta a un evento de pintura.

4. Personalización



- Tamaños de texto: Puedes usar `SetFont` para cambiar el tamaño del texto antes de calcular el tamaño del bocadillo.
- Colores y estilos: Personaliza el color de fondo y el texto usando `SetBkColor` y `SetTextColor`.

5. Agregar una punta al bocadillo



Si deseas agregar una punta al bocadillo, puedes dibujar un triángulo en la posición deseada utilizando `Polygon` o `LineTo` para crear la forma.

Consideraciones finales



- Asegúrate de manejar correctamente la memoria y los recursos de GDI.
- Prueba diferentes tamaños de texto y estilos para asegurarte de que el bocadillo se ajuste adecuadamente.

¡Buena suerte con tu proyecto, Óscar!
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