Druck von skalierten Bildern

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Druck von skalierten Bildern

Beitrag von peternmb »

Hallo,

ich muss einige Grafiken ausrducken, die nicht die gewünschte Größe haben. Ich verwende dazu folgenden Code:

Code: Alles auswählen

faktor=2
oBmp1 := xbpBitmap():New():Create()
oBmp1:PresSpace(oPS1)
oBmp1:LoadFile("Testgrafik.jpg")
breit:=oBmp1:xsize*faktor
hoch:=oBMP1:ysize*faktor
oBmp2 := xbpBitmap():New():Create()
oBmp2:PresSpace(oPS2)
oBmp2:Make(breit,hoch)
aS1 := {0,0,oBmp1:xSize,oBmp1:ySize}
aS2 := {0,0,oBmp2:xSize,oBmp2:ySize}
GraBitBlt(oBmp2:PresSpace(),oBmp1:PresSpace(),aS2,aS1,,GRA_BLT_BBO_IGNORE,Sleep(0.2))
oBmp2:draw( oPrinterPS, {200,200} )
Mein Problem ist, dass die Grafiken nach der Skalierung teilweise "Ränder" haben. Das passiert bei allen verwendeten Grafikformaten (BMP, GIF und JPG). Wenn ich die Grafiken in der Orginalgröße drucke gibt es keine Probleme.
Ich habe schon mit den Parametern von GraBitBlt experimentiert, konnte aber keinen sichtbaren Erfolg verbuchen :(
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Re: Druck von skalierten Bildern

Beitrag von Rolf »

Hallo

ich benutze die Funktion GraScale() siehe da in der Hilfe.

Code: Alles auswählen

        oPrinter  := XbpPrinter():new():create()
        //** INIT
        //-- Gr”áe der Druckseite abzglich nicht bedruckbarer R„nder berechnen
        //-- Die Einheit ist 1/10 mm
        aPaperSize  := oPrinter:paperSize()
        aPageSize   := { aPaperSize[5]-aPaperSize[3], aPaperSize[6]-aPaperSize[4] }

        //-- Druck PresSpace einrichten
        oPS      := XbpPresSpace():new()
        oPS:mode := XBPPS_MODE_HIGH_PRECISION
        oPS:create( oPrinter, aPageSize, GRA_PU_LOMETRIC ) // Drucker
        oPS:device():startDoc( cPrintJob )

Code: Alles auswählen

        //** BMP-Grafik fr Hintergrund drucken
        if(.T.)//if(::bWithBackGr == .T.)

            cBackFile   := ::cBMP
            iBackX      := 0 
            iBackY      := 0 
            iPy         := ARR_DLGDOK_PICSIZE[2]

            aMatrix  := GraInitMatrix()
            nSegment := GraSegOpen(oPS)
            iSc := ::iScale // 2.2

            if (File(cBackFile) ) //-- Kopfzeile
                oBmpKopf := XbpBitmap():new():create( oPS )
                //-- Laden
                if( oBmpKopf:loadFile(cBackFile) == .T.)
                    //-- Zeichnen
                    if( oBmpKopf:draw( oPS,{ iKR, iKE} ) == .F.)
                            Msgbox("Bild konnte nicht dargestellt werden!")
                    endif
                else
                    Msgbox("Bild fr den Dokumentkopf konnte nicht geladen!")
                endif
                oBMPKopf:destroy()
                oBMPKopf := NIL
            else
                Msgbox("Bilddatei '"+cBackFile+"' wurde nicht gefunden!")
            endif

            GraSegClose(oPS)
            GraSegDraw( oPS, nSegment )
            GraScale( oPS, aMatrix, {iSc,iSc}, {iKR,iKE} )
            GraSegDraw( oPS, nSegment, aMatrix )
        endif
Grüße Rolf
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Druck von skalierten Bildern

Beitrag von peternmb »

In der Hilfe finde ich bei GraScale() diesen Hinweis:
Matrix operations cannot be calculated for raster images (bitmaps).
To scale raster images the function GraBitBlt() must be used.
welches Grafik-Fornmat verwendest du? Bei mir geht es um GIF+JPG-Grafiken.
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Re: Druck von skalierten Bildern

Beitrag von Rolf »

Den Hinweis hab ich bisher überlesen, ich verwende *.gif mit einer Auflösung 930x1303x8
Hat bisher eigentlich funktioniert. :?
Antworten