| |
|
|
Bernd Krauss | Salut, chez einem Ausdruck avec Prospeed.DLL ist qui Druck viel trop petite. si je um den facteur 10 erhöhe, ensuite klappt es avec manchen Druckern, sur anderen calculateur stürzt il ab. Am Bildschirm wird cela Bild richtig angezeigt. ici ist qui Code pour qui Procédure. Es wird cela Bild = BDatei$ qui Koordinaten = Bx&, By& qui gewünschte Breite et Hauteur = BreitX&, BreitY& et si gedruckt volonté soll = Drk% übermittelt. peux mir quelqu'un aider? KompilierenMarqueSéparation
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 | s'il te plaît une lauffähigen Demoquellcode posten. ici peux je nirgendwo erkennen, comment dein Ausdruck vostatten aller soll. aussi qui Angabe deiner Profanversion wäre de Vorteil.
Nachtrag de iF: [tb]minimalbeispiel[/tb] |
|
|
| |
|
|
|
Bernd Krauss | allô Frank, vielen Dank pour qui rasche Antwort. ici ist qui lauffähige Voir le texte source, entschuldige s'il te plaît, je kam pas früher en supplément. Voraussetzung ist qui Prospeed.dll et un Bild nommé "alf.jpg" im Programmverzeichnis. j'ai cela de qui Prospeed.dll comme jpg-Dossier pris. si on cela Programme startet, sieht on, cela Bild wird korrekt am Bildschirm angezeigt, wird mais trop petite et à falscher Stelle gedruckt. qui paramètre drk% dans qui Procédure Bildanz écoutes dans diesem Programmbeispiel aucun rôle. Peut-être qui Procédure oui aussi viel trop compliqué programmiert. Es soll une JPG-Dossier à einer best. Stelle dans un Rechteck eingepasst et um 90 Grad gedreht volonté. Profanversion ist XProfan 10 Viele Grüße Bernd Krauss ici alors qui lauffähige Voir le texte source: KompilierenMarqueSéparationdeclare 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 | ah oui, je vois, quoi du meinst. expliquer peux je es dir mais pas. Wird une interne Profan-Drucker-HDC Geschichte son. ProSpeeds CopyExtBmp() ist oui seulement un Aufruf qui API BitBlt(). et qui funktioniert aussi faux, habs ausgetestet et dabei allen Schnickschnack weggelassen. Es liegt alors pas à qui Dll. si Roland que voici liessst, wird il sûrement quoi en supplément dire peut. Ansonsten musst du ihn la fois direct kontakten. |
|
|
| |
|
|
|
RGH | Salut,
API-Funktionen leitet XProfan grundsätzlich inchangé plus. API-Funktionen volonté alors grundsätzlich "auf eigene Gefahr" hin verwandt. Beim Drucken ist trop tenir compte de, qui qui Druckseite im Normalfall um den facteur 10 größer ist, comme qui Koordinaten- et Größenangaben dans XProfan. Alle Koordinatenangaben et Größenangaben beim Drucken mittels qui API sommes daher um cette facteur trop multiplizieren. (Ab XProfan 10 peux on den facteur mittels einer Set-Funktion einstellen et mittels einer Get-Funktion auslesen. Particularités siehe Aider.)
Salut 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 | allô Roland, vielen Dank pour qui schnelle Info. avec dem facteur 10 ca va. qui "Absturz", de dem je anfangs schrieb hat sich aufgeklärt: avec dem facteur 10 dauert qui Berechnung pour den Druck sur meinem alten P III 600 so longtemps, dass je toujours dachte, qui PC sei abgestürzt. Que le Set et Get-Funktion habe je allerdings trotz Studium qui XProfan 10 Aider pas verstanden. quelle Set-Funktion soll je prendre et quel Syntax? et avec quel Get Funktion soll je quoi auslesen? j'ai simple qui Koordinaten Bx& et By& et neubreit& et neuhoch& avec 10 multipliziert. Ist cela aussi ok? Viele Grüße Bernd |
|
|
| |
|
|
|
RGH | Bernd Krauss
Que le Set et Get-Funktion habe je allerdings trotz Studium qui XProfan 10 Aider pas verstanden. quelle Set-Funktion soll je prendre et quel Syntax? et avec quel Get Funktion soll je quoi auslesen?
Großes SORRY! là habe je oui c'est ca cet Set-Funktion dans qui Aider oublier qc:
avec @Set("PrintRes", N%) peux on den facteur verändern. Wennn Du pour N% la valeur 1 prends, sollte es zwar marcher, sans qui Du den facteur dans Deinem Programme einbaust, mais qui Ausdruck pourrait ensuite quelque chose grobkörnig son, là seulement avec etwa 80dpi (20 cm = ca. 8 douane. 640 Punkte sur 8 douane pouvoir plan 80 Punkte/douane) gedruckt wird. qui Druckauflösung entspricht ensuite alors etwa 3 Punkte/mm. si cela reicht, etwa pour Farb-Fotos, ist cela qui einfachste Solution. chez Liniengrafiken könnten ensuite allerdings Treppchen trop voyons son. (dans qui Standardeinstellung avec facteur 10 entspricht qui Druckauflösung etwa 800dpi ... um là Treppchen trop voyons, braucht es déjà une Laserdrucker, dünne diaogonale Linien et une gute Lupe.)
avec @Get("PrintRes") peux qui eingestellte Wert ausgelesen volonté.
Salut 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! là habe je oui c'est ca cet Set-Funktion dans qui Aider oublier qc:
| |
|
|
|
| |
|
|