• Sábado 20 de Abril de 2024, 06:50

Autor Tema:  Imprimir Un Fichero Bmp  (Leído 1476 veces)

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Imprimir Un Fichero Bmp
« en: Jueves 5 de Julio de 2007, 22:53 »
0
Hola, he estado buscando en la ayuda de c++ builder y no veo la manera clara de imprimir un fichero bmp. Mi idea es cargarlo en un TGraphic::Bitmap *bm y luego en un Tprinter *p dibujarlo en su Canvas p->Canvas->Draw(x,y,bm). El caso es que pensé que si quería que se imprimiera en la parte superior izquierda del folio, x e y debían ser 0, pero me da error ( access violation ).

Alguna solución? Muchas gracias!

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Imprimir Un Fichero Bmp
« Respuesta #1 en: Viernes 6 de Julio de 2007, 06:26 »
0
echale un vistazo al siguiente codigo
considera de que existe en la forma un objeto de los que mandan a mostrar el cuadro de dialogo para mandar a imprimir de la pestaña dialogs
Citar
       int Y = 10;
        int pag;
        bool enc;
                enc = true;
                Graphics::TBitmap *mapa = new Graphics::TBitmap();
                try
                 {
                        mapa->LoadFromFile("Imagenes\\logop.bmp");
                        mapa->Transparent = false;
                        mapa->TransparentColor = mapa->Canvas->Pixels[50][50];
                        mapa->TransparentMode = tmAuto;
                 }catch(...)
                  {
                        enc = false;
                  }
                if (impri->Execute())
                 {
                        Printer()->Title = "Listado";
                        Printer()->Canvas->Font = fuente->Font;
                        Printer()->BeginDoc();
                        for (int n=0; n<impri->Copies; ++n)
                         {      //encabezado
                                pag = 1;
                                if (enc)
                                 {
                                        Printer()->Canvas->Draw(10,Y,mapa);
                                 }
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Printer()->Canvas->TextOutA(Printer()->PageWidth-150,Y,
                                                                             "Pagina "+AnsiString(pag));
                                 Y += mapa->Height+
                                         Printer()->Canvas->TextHeight("XXX"));
                                Printer()->Canvas->TextOutA(10,Y,"Wepssoft Software");
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Printer()->Canvas->TextOutA(10,Y,"Cyber Ventas");
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Printer()->Canvas->TextOutA(10,Y,"Compañia: FC Ciber");
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Y += Printer()->Canvas->TextHeight("XXX");
                                //texto que quieras imprimir
                                Y += Printer()->Canvas->TextHeight("XXX");
                                Printer()->Canvas->MoveTo(0,Y);
                                Printer()->Canvas->LineTo(Printer()->PageWidth,Y);
                                Y += Printer()->Canvas->TextHeight("XXX");
                                        Y += Printer()->Canvas->TextHeight("XXX");
                                        if (Y >Printer()->PageHeight)
                                         {
                                                Printer()->NewPage();
                                                Y = 10;
                                                ++pag;
                                                if (enc)
                                                 {
                                                        Printer()->Canvas->Draw(10,Y,mapa);
                                                 }
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                  Printer()->Canvas->TextOutA(Printer()->
                                                              PageWidth-150,Y,"Pagina"
                                                             +AnsiString(pag));
                                                 Y += (mapa->Height+Printer()->
                                                        Canvas->TextHeight("XXX"));
                                                Printer()->Canvas->TextOutA(10,Y,
                                                                          "Wepssoft Software");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Printer()->Canvas->TextOutA(10,Y,
                                                                             "Ventas");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Printer()->Canvas->TextOutA(10,Y,
                                                                               "Compañia: Ciber");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Printer()->Canvas->TextOutA(10,Y,"Codigo");
                                                Printer()->Canvas->TextOutA(600,Y,"Producto");
                                                Printer()->Canvas->TextOutA(1200,Y,"Grupo");
                                                Printer()->Canvas->TextOutA(1800,Y,"Cant");
                                                Printer()->Canvas->TextOutA(2100,Y,"Precio");
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                                Printer()->Canvas->MoveTo(0,Y);
                                                Printer()->Canvas->LineTo(Printer()->PageWidth,
                                                                                          Y);
                                                Y += Printer()->Canvas->TextHeight("XXX");
                                          }
                         }
                        Printer()->EndDoc();
                 }
                delete mapa;