C/Visual C - Imprimir en Visual C ?

 
Vista:

Imprimir en Visual C ?

Publicado por David (7 intervenciones) el 30/09/2001 13:50:02
....No lo entiendo.... !!!
El problema que tengo es que no se me IMPRIME en el papel el Bitmap que he creado , en canvio si se muestra en pantalla en la presentación preliminar.
Como he de hacerlo para que se imprima en el papel ?
....este es el codigo fuente....
CBitmap* m_pBitmap;
CBitmap* m_pOldBitmap;
BITMAP Bitmap;
CDC dc;
dc.DeleteDC();
m_pBitmap=new CBitmap;
m_pBitmap->LoadBitmap(IDB_BITMAP1);
dc.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap=dc.SelectObject(m_pBitmap);
m_pBitmap->GetObject(sizeof(Bitmap),&Bitmap);
pDC->BitBlt (100,100,Bitmap.bmWidth,Bitmap.bmHeight,&dc,0,0,SRCCOPY);// 2695,3655
dc.SelectObject(pOldBitmap);
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

Imprimir un bitmap en papel

Publicado por Alejandro (913 intervenciones) el 16/10/2024 16:44:57
Para imprimir un bitmap en papel en Visual C++, necesitas asegurarte de que estás utilizando el contexto de dispositivo (DC) correcto para la impresión. A continuación, te muestro cómo puedes modificar tu código para imprimir el bitmap en lugar de solo mostrarlo en la pantalla.

Aquí tienes un ejemplo de cómo hacerlo:

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
void ImprimirBitmap(CDC* pDC) {
    CBitmap* m_pBitmap = new CBitmap;
    m_pBitmap->LoadBitmap(IDB_BITMAP1);
 
    // Crear un DC compatible para el bitmap
    CDC dc;
    dc.CreateCompatibleDC(pDC);
 
    // Seleccionar el bitmap en el DC
    CBitmap* pOldBitmap = dc.SelectObject(m_pBitmap);
 
    BITMAP Bitmap;
    m_pBitmap->GetObject(sizeof(Bitmap), &Bitmap);
 
    // Imprimir el bitmap en el papel
    pDC->BitBlt(100, 100, Bitmap.bmWidth, Bitmap.bmHeight, &dc, 0, 0, SRCCOPY);
 
    // Limpiar
    dc.SelectObject(pOldBitmap);
    delete m_pBitmap;
}
 
void OnPrint(CPrintInfo* pInfo) {
    CDC* pDC = pInfo->m_pPD->GetPrinterDC();
    if (pDC) {
        // Iniciar el documento
        pDC->StartDoc(_T("Impresión de bitmap"));
        pDC->StartPage();
 
        // Llamar a la función para imprimir el bitmap
        ImprimirBitmap(pDC);
 
        // Finalizar la página y el documento
        pDC->EndPage();
        pDC->EndDoc();
        pDC->DeleteDC();
    }
}

Notas importantes:


1. Contexto de impresión: Asegúrate de que estás utilizando el contexto de dispositivo (DC) de la impresora (`pDC`) en lugar de un DC de pantalla.
2. Manejo de memoria: Asegúrate de liberar la memoria del bitmap después de usarlo para evitar fugas de memoria.
3. Configuración de impresión: Asegúrate de que la configuración de impresión (como márgenes y tamaño de papel) sea la adecuada para tu bitmap.

Integración:


Asegúrate de llamar a `OnPrint` desde el manejador de eventos de impresión de tu aplicación, como `OnBeginPrint` u `OnPrint` en tu clase de vista.

¡Buena suerte, David!
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