| |
|
|
Bernd Krauss | ¡Hola, en una Ausdruck con Prospeed.DLL es el Druck viel a klein. Wenn Yo en el Faktor 10 erhöhe, entonces klappt lo con manchen Druckern, en otro Rechner stürzt él de. Am Bildschirm se el Bild correcto adecuado. Hier es el Code para el Procedimiento. Lo se el Bild = BDatei$ el Koordinaten = Bx&, By& el gewünschte Breite y Höhe = BreitX&, BreitY& y si gedruckt voluntad se = Drk% übermittelt. Kann me alguien helfen? KompilierenMarcaSeparación
Proc BildAnz
parameters BDatei$, Bx&, By&, BreitX&, BreitY&, Drk%
declare BQuelle&, BBreite&, BHoehe&, neubreit&, neuhoch&
declare neubreitx&, neuhochy&, DrkKlein&, DrkBild&
declare Faktor%
let Faktor% = 10
BQuelle&=LoadExtImage(addr(BDatei$))
ifnot equ(BQuelle&,0)
BBreite& = GetBmpWidth(BQuelle&) Breite und Hoehe des Bilds
BHoehe& = GetBmpHeight(BQuelle&) ermitteln
messagebox(Str$(BBreite&),Str$(BHoehe&),0)
if gt(BBreite& / BHoehe& , BreitX& / BreitY&)
neubreit& = BreitX&
neuhoch& = BHoehe&/BBreite&*neubreit&
else
neuhoch& = BreitY&
neubreit& = BBreite&/BHoehe&*neuhoch&
endif
if drk%
let neuhoch& = neuhoch& * Faktor%
let neubreit& = neubreit& * Faktor%
DrkKlein&=CreateExtBmp(%HDC,neubreit&,neuhoch&)
SizeExtBmp (DrkKlein&,0,0,neubreit&,neuhoch&,BQuelle&,0,0,BBreite&,BHoehe&,0)
DrkBild&=CreateExtBmp(%HDC,neuhoch&,neubreit&)
Die automatische Zentrierung beim Rotieren ausgleichen
If neubreit&>=neuhoch&
neubreitx&=(neubreit&-neuhoch&)/2
Else
neubreitx&=(neuhoch&-neubreit&)/2
EndIf
neuhochy&=neubreitx&
Case neubreit&>neuhoch&:neubreitx&=-neubreitx&
Case neuhoch&>neubreit&:neuhochy&=-neuhochy&
RotateExtBmp(DrkBild&,neubreitx&,neuhochy&,neubreit&,neuhoch&,DrkKlein&,0,0,90,0)
let Bx& = Bx& * Faktor%
let By& = By& * Faktor%
CopyExtBmp(%hdc,Bx&,By&,neuhoch&,neubreit&,DrkBild&,0,0,0)
else
SizeExtBmp (%hdc,Bx&,By&,neubreit&,neuhoch&,BQuelle&,0,0,BBreite&,BHoehe&,0)
endif
endif
FreeAllExtBmps()
='./../../funktionsreferenzen/XProfan/ENDPROC/'>ENDPROC
|
|
|
| |
|
|
|
Frank Abbing | Bitte una lauffähigen Demoquellcode puesto. Hier kann Yo nirgendwo erkennen, como dein Ausdruck vostatten ir se. Auch el Angabe deiner Profanversion wäre de Vorteil.
Apéndice de IF: [tb]minimalbeispiel[/tb] |
|
|
| |
|
|
|
Bernd Krauss | ¡Hola Franco, vielen Dank para el rasche Antwort. Hier es el lauffähige Ver código fuente, entschuldige Por favor,, Yo kam no früher dazu. Voraussetzung Es el Prospeed.dll y una Bild nombre "alf.jpg" en el Programmverzeichnis. Yo habe el de el Prospeed.dll como jpg-Expediente genommen. Wenn al Programa startet, sieht uno, el Bild se korrekt al Bildschirm adecuado, se aber a klein y a falscher Punto gedruckt. Der Parámetro drk% en el Procedimiento Bildanz juega en diesem Programmbeispiel ningún papel. Tal vez el Procedimiento en efecto viel a kompliziert programmiert. Lo se una JPG-Expediente a uno best. Punto en una Rechteck eingepasst y en 90 Grad gedreht voluntad. Profanversion es XProfan 10 Viele Grüße Bernd Krauss Hier also el lauffähige Ver código fuente: KompilierenMarcaSeparacióndeclare neudll&, Antw%
DEF LoadExtImage(1) !"ProSpeed","LoadExtImage"
DEF SizeExtBmp(11) !"ProSpeed","SizeExtBmp"
DEF CreateExtBmp(3) !"ProSpeed","CreateExtBmp"
DEF RotateExtBmp(10) !"ProSpeed","RotateExtBmp"
DEF CopyExtBmp(9) !"ProSpeed","CopyExtBmp"
DEF GetBmpWidth(1) !"ProSpeed","GetBmpWidth"
DEF GetBmpHeight(1) !"ProSpeed","GetBmpHeight"
DEF FreeAllExtBmps(0) !"ProSpeed","FreeAllExtBmps"
neudll&=usedll("ProSpeed.dll")
Proc BildAnz
parameters BDatei$, Bx&, By&, BreitX&, BreitY&, Drk%
declare BQuelle&, BBreite&, BHoehe&, neubreit&, neuhoch&
declare neubreitx&, neuhochy&, DrkKlein&, DrkBild&
BQuelle&=LoadExtImage(addr(BDatei$))
ifnot equ(BQuelle&,0)
BBreite& = GetBmpWidth(BQuelle&) Breite und Hoehe des Bilds
BHoehe& = GetBmpHeight(BQuelle&) ermitteln
Es wird geprüft, ob an Breite oder Höhe angepasst wird
if gt(BBreite& / BHoehe& , BreitX& / BreitY&)
neubreit& = BreitX&
neuhoch& = BHoehe&/BBreite&*neubreit&
else
neuhoch& = BreitY&
neubreit& = BBreite&/BHoehe&*neuhoch&
endif
DrkKlein&=CreateExtBmp(%HDC,neubreit&,neuhoch&)
SizeExtBmp (DrkKlein&,0,0,neubreit&,neuhoch&,BQuelle&,0,0,BBreite&,BHoehe&,0)
DrkBild&=CreateExtBmp(%HDC,neuhoch&,neubreit&)
Die automatische Zentrierung beim Rotieren ausgleichen
If neubreit&>=neuhoch&
neubreitx&=(neubreit&-neuhoch&)/2
Else
neubreitx&=(neuhoch&-neubreit&)/2
EndIf
neuhochy&=neubreitx&
Case neubreit&>neuhoch&:neubreitx&=-neubreitx&
Case neuhoch&>neubreit&:neuhochy&=-neuhochy&
RotateExtBmp(DrkBild&,neubreitx&,neuhochy&,neubreit&,neuhoch&,DrkKlein&,0,0,90,0)
CopyExtBmp(%hdc,Bx&,By&,neuhoch&,neubreit&,DrkBild&,0,0,0)
endif
FreeAllExtBmps()
endproc
cls
rectangle 100 , 100 , 300, 400
BildAnz "alf.jpg" , 100 , 100 , 300, 200 , 0
let Antw%=messagebox ("Willst du drucken?", "Druck?", 4)
if Antw%=6
cls
startprint
rectangle 100 , 100 , 300, 400
BildAnz "alf.jpg" , 100 , 100 , 300, 200 , 1
endprint
endif
FreeAllExtBmps()
freedll eudll&
end
|
|
|
| |
|
|
|
Frank Abbing | Ach sí, Yo sehe, qué du media. Erklären kann Yo dir pero no. Wird una interne Profano-Drucker-HDC Geschichte ser. ProSpeeds CopyExtBmp() es sí sólo una Aufruf el API BitBlt(). Und el funktioniert auch falso, habs ausgetestet y esta allen Schnickschnack weggelassen. Lo liegt also no a el Dll. Wenn Roland que aquí liessst, se él sicher qué dazu sagen puede. Ansonsten musst du ihn veces direkt kontakten. |
|
|
| |
|
|
|
RGH | ¡Hola,
API-Características leitet XProfan grundsätzlich unverändert más. API-Características voluntad also grundsätzlich "auf propio Gefahr" hin verwandt. Beim Drucken es a beachten, daß el Druckseite en el Normalfall en el Faktor 10 größer es, como el Koordinaten- y Größenangaben en XProfan. Alle Koordinatenangaben y Größenangaben beim Drucken mittels el API son por lo tanto en esta Faktor a multiplizieren. (Ab XProfan 10 puede ser el Faktor mittels uno Conjunto-Función einstellen y mittels uno Get-Función auslesen. Näheres siehe Ayuda.)
Saludo Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.02.2007 ▲ |
|
|
|
|
Bernd Krauss | Hola Roland, vielen Dank para rápido Info. Mit el Faktor 10 es. Der "Absturz", de el Yo anfangs schrieb ha se aufgeklärt: Mit el Faktor 10 dauert el Berechnung para el Druck en mi alten P III 600 así largo, dass Yo siempre pensamiento, el PC sei abgestürzt. Que el Conjunto y Get-Función Yo allerdings trotz Studium el XProfan 10 Ayuda no verstanden. Welche Conjunto-Función se Yo nehmen y welcher Syntax? Und con welcher Get Función se Yo qué auslesen? Yo habe simplemente el Koordinaten Bx& y By& y neubreit& y neuhoch& con 10 multipliziert. Ist el auch ok? Viele Grüße Bernd |
|
|
| |
|
|
|
RGH | Bernd Krauss
Que el Conjunto y Get-Función Yo allerdings trotz Studium el XProfan 10 Ayuda no verstanden. Welche Conjunto-Función se Yo nehmen y welcher Syntax? Und con welcher Get Función se Yo qué auslesen?
Großes SORRY! Como Yo genau esta Conjunto-Función en el Ayuda vergessen:
Mit @Conjunto("PrintRes", N%) puede ser el Faktor verändern. Wennn Usted para N% valor 1 nimmst, debería lo zwar trabajo, sin daß Usted el Faktor en Deinem Programa einbaust, pero la Ausdruck dürfte entonces algo grobkörnig ser, como sólo etwa 80dpi (20 cm = ca. 8 Zoll. 640 Punkte en 8 Zoll macht eben 80 Punkte/Zoll) gedruckt se. El Druckauflösung entspricht entonces also etwa 3 Punkte/mm. Si el reicht, etwa para Farb-Fotos, es el el einfachste Solución. En Liniengrafiken könnten entonces allerdings Treppchen a sehen ser. (In el Standardeinstellung con Faktor 10 entspricht el Druckauflösung etwa 800dpi ... en como Treppchen a sehen, braucht lo ya una Laserdrucker, dünne diaogonale Linien y una gute Lupe.)
Mit @Get("PrintRes") kann el eingestellte Valor ausgelesen voluntad.
Saludo Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 15.02.2007 ▲ |
|
|
|
|
| RGH
Großes SORRY! Como Yo genau esta Conjunto-Función en el Ayuda vergessen:
| |
|
|
|
| |
|
|