| |
|
|
Rainer Hoefs | ¡Hola zusammen, Yo necesidad veces otra vez Ayuda Comunidad.
Leider muß Yo vorher algo ausholen. Dabei benutze Yo en el Folgenden esta Begriffe:
Teppichdesign = Es el Mapa de bits con el Muster Teppichgröße = el reaele Teppichgröße en cm Druckseite = lt. Profano 680 X 960 Punkte. (6800 X 9600 intern)
El Pixelmaße des Teppichdesigns (z.B. 771x / 1221y) haben nichts con el Teppichgröße a tun, el en diesem Ejemplo 200 * 300 cm ser se el hängt simplemente de el Webmaschine y Webdichte de.
Yo lade el Teppichdesign en una "hPic.Teppichdesign" y berechne encima verschiedenen Vergleichskriterien zwischen el "Aspectratio.Teppichdesign a Aspectratio.Teppichgröße" el Größe uno neuen "hPic.Teppichgröße" en el el "hPic.Teppichdesign" con "DrawSizedPic" hineingeschrieben se. Dabei se grundsätzlich niemals el número el X oder Y vom Teppichdesign verkleinert, pero sólo una el beiden Dimensionen, X oder Y, vergrößert, así lo niemals a Verlust de Bildpunkten, Bildqualität kommt. Das klappt alles wunderbar. El "hPic.Teppichgröße" ha also genau el Seitem-Längenverhältnis el Teppichmaße cm.
Nun möchte Yo el neu erstellte Mapa de bits con el richtigen "Aspectratio.Teppichgröße" en uno Druckseite uno beliebigen Druckers así ausdrucken, el esta máximo seitenfüllend bajo Berücksichtigung el "Aspectratio.Teppichgröße" el Papier kommt. Und genau el bekomme Yo simplemente no hin.
El Procedimiento, el mi Maße para el Mapa de bits con el richtigen Teppichgröße berechnet debería eigentlich auch para esta Berechnung trabajo. Sie empfängt 4 Parámetro, el Teppichbreite cm = "CarpetWidth%", Teppichhöhe cm = "CarpetHeight%", Designbreite pix = "DesignWidth%", Designhöhe pix = "DesignHeight%.
Yo habe ya probiert no el Teppichgröße cm x cm pero el 680 X 960 Pixel el Profano benutzt o internen 6800 X 9600 internen Pixel de Profano einzusetzen.
Weiterhin Yo lo con el echten möglichen Druckerpixel pro Página probiert el con: HorzSize& = ~GetDeviceCaps(&PDC, ~HORZSIZE) VertSize& = ~GetDeviceCaps(&PDC, ~VERTSIZE) ausgelesen voluntad.
Alles ha no Erfolg gebracht. Nun weiß Yo no mehr más. Yo hoffe lo einigermaßen verständlich beschrieben a haben.
Tal vez sabe alguien una solución.
Gracias ya veces en el Voraus.
$H Windows.ph
Declarar Design2Load$, Design2Write$, NewFileName$, Save2FileName$, OriginalDesign&, File2Convert&
Declarar PictureWidth%, PictureHeight%, CarpetWidthCM%, CarpetHeightCM%, A%, B%, C%, D%, HorzSize&, VertSize&
Proc CalculatePictureSize
Parámetros CarpetWidth%, CarpetHeight%, DesignWidth%, DesignHeight%
Declarar DesignAspect!, CarpetAspect!, Mode$
CarpetAspect! = (CarpetWidth% / CarpetHeight%)
DesignAspect! = (DesignWidth% / DesignHeight%)
If CarpetAspect! < 1'Hoch
If DesignAspect! < 1'Hoch
If CarpetAspect! < DesignAspect!
Mode$ = "01"
PictureWidth% = DesignWidth%
PictureHeight% = ((DesignWidth% / CarpetWidth%) * CarpetHeight%)
ElseIf CarpetAspect! = DesignAspect!
Mode$ = "02"
PictureWidth% = DesignWidth%
PictureHeight% = DesignHeight%
ElseIf CarpetAspect! > DesignAspect!
Mode$ = "03"'OK
PictureWidth% = ((DesignHeight% / CarpetHeight%) * CarpetWidth%)
PictureHeight% = DesignHeight%
EndIf
ElseIf DesignAspect! > 1'Quer
If CarpetAspect! < DesignAspect!
Mode$ = "04"
PictureWidth% = DesignWidth%
PictureHeight% = ((DesignWidth% / CarpetWidth%) * CarpetHeight%)
EndIf
EndIf
ElseIf CarpetAspect! = 1'Quadrat
If DesignAspect! < 1'Hoch
Mode$ = "05"
PictureWidth% = DesignHeight%
PictureHeight% = DesignHeight%
ElseIf DesignAspect! = 1'Quadrat
Mode$ = "06"
PictureWidth% = DesignWidth%
PictureHeight% = DesignHeight%
ElseIf DesignAspect! > 1'Quer
Mode$ = "07"
PictureWidth% = DesignWidth%
PictureHeight% = DesignWidth%
EndIf
ElseIf CarpetAspect! > 1'Quer
If DesignAspect! < 1'Hoch
If CarpetAspect! < DesignAspect!
Mode$ = "08"
PictureWidth% = DesignWidth%
PictureHeight% = ((DesignWidth% / CarpetWidth%) * CarpetHeight%)
ElseIf CarpetAspect! = DesignAspect!
Mode$ = "09"
PictureWidth% = DesignWidth%
PictureHeight% = DesignHeight%
ElseIf CarpetAspect! > DesignAspect!
Mode$ = "10"'OK
PictureWidth% = ((DesignHeight% / CarpetHeight%) * CarpetWidth%)
PictureHeight% = DesignHeight%
EndIf
ElseIf DesignAspect! > 1'Quer
If CarpetAspect! < DesignAspect!
Mode$ = "11"
PictureWidth% = DesignWidth%
PictureHeight% = ((DesignWidth% / CarpetWidth%) * CarpetHeight%)
ElseIf CarpetAspect! = DesignAspect!
Mode$ = "12"
PictureWidth% = DesignWidth%
PictureHeight% = DesignHeight%
ElseIf CarpetAspect! > DesignAspect!
Mode$ = "13"
PictureWidth% = ((DesignWidth% / CarpetHeight%) * DesignHeight%)
PictureHeight% = DesignHeight%
EndIf
EndIf
EndIf
ENDPROC
Ventana 100, 10 - 1700, 1000
Design2Load$ = LoadFile$(%hwnd, "Datei para konvertieren invitar...","Designs|*.APF;*.BMP;*.JPG;*.PNG;*.GIF",0)'Design auswählen
If Design2Load$ <> ""
OriginalDesign& = Crear ("HPIC", -1, Design2Load$, 0)'Mapa de bits con Originaldesign redactar
DrawPic OriginalDesign&, 1, 1; 0'Originaldesign Mostrar
CarpetWidthCM% = Entrada$("CarpetWidth cm: ", "100", 1)'Tepichbreite abfragen
CarpetHeightCM% = Entrada$("CarpetHeight cm: ", "100", 1)'Tepichlänge abfragen
CalculatePictureSize CarpetWidthCM%, CarpetHeightCM%, %bmpx, %bmpy'Neue Designgröße berechnen
File2Convert& = Crear ("hSizedPic",-1, Design2Load$, PictureWidth%, PictureHeight%, 0)'Design en el neuen Größe redactar
CLS
DrawPic File2Convert&, 1, 1; 0'Design con neuer Größe Mostrar
NewFileName$ = SaveFile$(%hwnd, "Speichere Design como...", "PNG-Expediente (*.PNG)|*.PNG|JPEG-Expediente (*.JPG)|*.JPG|BMP-Expediente (*.BMP)|*.BMP", 1)
If NewFileName$ <> ""
SavePic NewFileName$, File2Convert&'Design con neuer Größe como BMP, PNG, JPG speichern
EndIf
If MessageBox ("Soll el Design gedruckt voluntad?", "DRUCKEN", 292) = 6
StartPrint "* " + NewFileName$
If %printing
DrawSizedPic File2Convert&, 0, 0, %bmpx/2, %bmpy/2; 0
EndPrint
EndIf
EndIf
DeleteObject File2Convert&'Das Objeto löschen
DeleteObject OriginalDesign&'Das Objeto löschen
EndIf
End
|
|
|
| |
|
|
|
H.Brill | Verwende veces Crear("hSizedPic",...) con el letzten Paraemeter Modus con 1.
Das müßte doch el Bild bajo Berücksichtigung el Seitenverhältnisse korrekt einpassen.
Außerdem sería Yo en Druckseite todavía el Seitenränder abziehen. Como ha el Druckertreiber me auch ya Streiche con me gemacht. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.02.2018 ▲ |
|
|
|
|
Rainer Hoefs | ¡Hola H Brill, el Mapa de bits el para Drucker geschickt se ha ya el richtigen Dimensionen laut TeppichgrößeCM.
Diese gilt lo en el Druckbereich uno Druckseite correcto einzupassen.
Sollte entonces dein Vorschlag Zwischen Starprint y Endprint passieren? Auf qué berechne Yo entonces el Edición en el 680 960 oder 6800 9600 oder en el encima GetDeviceCaps errechneten möglichen Druckerpixel?
Verstehe lo así no wirklich.
MfG |
|
|
| |
|
|
|
H.Brill | Naja, si yo el 680 por 21 (Breite uno Blatt Papieres) teile, komme I etwa 32 Druckerpixel pro cm. Das gleiche kommt auch en Höhe uno Blattes fuera. Como sería Yo ca. 35 Pixel pro Rand abziehen.
Was el Dimensionierung betrifft :
Crear("hSizedPic",...) macht el doch para dich, egal como groß el Mapa de bits como Expediente es. Das se prozentual entonces eingepaßt. Das kannst du also ya beim Laden el Mapa de bits hacer.
Also, Yo sería como veces algo anders dran ir. Mach doch veces una hPic con 680 -70, 960 -70 . Das Bild malst du en una Leinwand, also Static& = Crear("Static",%HWnd, 680, 960) a Position 35, 35. Also entonces con StartPaint Static& DrawPic Bitmaphnadle, 35, 35, .... EndPaint en él dibujar. Como lo sí sólo una Página es, sería Yo el entonces con WinCopy Static& drucken.
Wäre auch veces una Möglichkeit.
Wenn gewünscht es, el Staticfenster no a sehen, kann uno lo sí después de el Erstellen con ShowWindow verstecken. Und después de el Druck simplemente otra vez con DestroyWindow el Static otra vez liberación. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.02.2018 ▲ |
|
|
|