Printer.Canvas.Pie() unter Linux
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Printer.Canvas.Pie() unter Linux
Hallo,
ich hab die Erfahrung machen müssen, dass Printer.Canvas.Pie() nichts zeichnet. Derselbe Aufruf mit Image.Picture.Bitmap.Canvas.Pie() funktioniert aber sehr wohl. Derselbe Aufruf Printer.Canvas.Pie() unter Windows funktioniert auch. Genau genommen übergebe ich einen Canvas (Image.Picture.Bitmap.Canvas oder Printer.Canvas) an eine Prozedur, die Canvas.Pie() aufruft. Es handelt sich also wirklich um dieselben Parameter, mit denen ich Canvas.Pie() aufrufe. Mir ist klar, dass ich dabei mit unterschiedlichen DPI Werten konfrontiert bin. Es liegt aber nicht daran, dass der Pen vielleicht zu dünn wäre. Mein Workaround ist, dass ich statt dem Pie eine Ellipse zeichne, teilweise ein FillRect darüber lege und zwei Linien zeichne. Das funktioniert, weil Brush bsClear ist. Die Ellipse hat denselben Pen und zeichnet auch auf dem Printer.Canvas unter Linux das gewünschte Ergebnis.
Woran soll ich nun den Fehler fest machen? Ist es ein gemeinsamer Code für Printer.Canvas.Pie und Image.Picture.Bitmap.Canvas.Pie, der entsprechende Funktionen im Gerätetreiber voraussetzt? Dann wäre der Druckertreiber verantwortlich. Oder ist es unterschiedlicher Code je nach Gerätetreiber? Dann würde ich einen Bug Report für die LCL schreiben.
Gruß
Heiner
ich hab die Erfahrung machen müssen, dass Printer.Canvas.Pie() nichts zeichnet. Derselbe Aufruf mit Image.Picture.Bitmap.Canvas.Pie() funktioniert aber sehr wohl. Derselbe Aufruf Printer.Canvas.Pie() unter Windows funktioniert auch. Genau genommen übergebe ich einen Canvas (Image.Picture.Bitmap.Canvas oder Printer.Canvas) an eine Prozedur, die Canvas.Pie() aufruft. Es handelt sich also wirklich um dieselben Parameter, mit denen ich Canvas.Pie() aufrufe. Mir ist klar, dass ich dabei mit unterschiedlichen DPI Werten konfrontiert bin. Es liegt aber nicht daran, dass der Pen vielleicht zu dünn wäre. Mein Workaround ist, dass ich statt dem Pie eine Ellipse zeichne, teilweise ein FillRect darüber lege und zwei Linien zeichne. Das funktioniert, weil Brush bsClear ist. Die Ellipse hat denselben Pen und zeichnet auch auf dem Printer.Canvas unter Linux das gewünschte Ergebnis.
Woran soll ich nun den Fehler fest machen? Ist es ein gemeinsamer Code für Printer.Canvas.Pie und Image.Picture.Bitmap.Canvas.Pie, der entsprechende Funktionen im Gerätetreiber voraussetzt? Dann wäre der Druckertreiber verantwortlich. Oder ist es unterschiedlicher Code je nach Gerätetreiber? Dann würde ich einen Bug Report für die LCL schreiben.
Gruß
Heiner
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Printer.Canvas.Pie() unter Linux
Hallo,
ich hab eine Beispielanwendung zu dem Problem gemacht. Siehe Dateianhang. Es wäre schön, wenn jemand das auf seinem Linux ausprobiert und mir schreibt, ob er das Pie drucken kann.
Gruß
Heiner
ich hab eine Beispielanwendung zu dem Problem gemacht. Siehe Dateianhang. Es wäre schön, wenn jemand das auf seinem Linux ausprobiert und mir schreibt, ob er das Pie drucken kann.
Gruß
Heiner
- Dateianhänge
-
- pie.zip
- (2.94 KiB) 101-mal heruntergeladen
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: Printer.Canvas.Pie() unter Linux
Heinrich Wolf hat geschrieben:Hallo,
ich hab eine Beispielanwendung zu dem Problem gemacht. Siehe Dateianhang. Es wäre schön, wenn jemand das auf seinem Linux ausprobiert und mir schreibt, ob er das Pie drucken kann.
Gruß
Heiner
Hab dies mal bei mir über 2 Drucker gejagt. Pie wird nicht gedruckt, aber Ellipse druckt der auf eine komplette A4 Seite
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Printer.Canvas.Pie() unter Linux
Danke Maik für die Rückmeldung! Ich schreibe einen report in Bug Tracker.
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Printer.Canvas.Pie() unter Linux
Hallo Maik,
noch eine Frage: Wie sieht die Ellipse aus? Ist sie schön in den maximal bedruckbaren Bereich eingepasst? Oder ist etwas abgeschnitten? Bei mir fehlt unten etwas. Aber es gibt auch keinen exakt passenden Druckertreiber für meinen Drucker unter Linux. Ich musste auf einen ähnlichen Druckertreiber ausweichen.
Gruß
Heiner
noch eine Frage: Wie sieht die Ellipse aus? Ist sie schön in den maximal bedruckbaren Bereich eingepasst? Oder ist etwas abgeschnitten? Bei mir fehlt unten etwas. Aber es gibt auch keinen exakt passenden Druckertreiber für meinen Drucker unter Linux. Ich musste auf einen ähnlichen Druckertreiber ausweichen.
Gruß
Heiner
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: Printer.Canvas.Pie() unter Linux
Jopp an der Unteren Ecke wurde estwas abgeschnitten. Aber wie du es schon erwähntest beim Drucken,
hab gestern versucht etwas an dem Canvas zu spielen, aber leider ohne erfolg. Heut bin ich nur on, um alle Post zu lesen und wenn was is, wo ich mitreden kann. schreib i ma meine 2 bis 5 Zeilen ^^
Versuche AM WE mal wieder da was zu spielen.
hab gestern versucht etwas an dem Canvas zu spielen, aber leider ohne erfolg. Heut bin ich nur on, um alle Post zu lesen und wenn was is, wo ich mitreden kann. schreib i ma meine 2 bis 5 Zeilen ^^
Versuche AM WE mal wieder da was zu spielen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Printer.Canvas.Pie() unter Linux
Danke Maik für die Antwort.
Ich hatte bisher nur einen Druckertreiber aus Fedora 14, der nicht ganz zu meinem Canon iP3500 passte. Da war rechts gar nichts abgeschnitten und unten relativ viel. Soeben hab ich auf der Canon Webseite einen exakt passenden Druckertreiber gefunden und installiert. Jetzt ist bei mir fast nichts mehr abgeschnitten. Es fehlen nur wenige Pixel unten, aber jetzt fehlen auch noch rechts ein paar wenige Pixel.
Gruß
Heiner
Ich hatte bisher nur einen Druckertreiber aus Fedora 14, der nicht ganz zu meinem Canon iP3500 passte. Da war rechts gar nichts abgeschnitten und unten relativ viel. Soeben hab ich auf der Canon Webseite einen exakt passenden Druckertreiber gefunden und installiert. Jetzt ist bei mir fast nichts mehr abgeschnitten. Es fehlen nur wenige Pixel unten, aber jetzt fehlen auch noch rechts ein paar wenige Pixel.
Gruß
Heiner
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: Printer.Canvas.Pie() unter Linux
Nun hab dies mit eine HP psc 1300 und einem hp CM1312 mfp nfi via netzwerk gedruck. Werde aber am we, wenn machbar mal mit drüberschauen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Printer.Canvas.Pie() unter Linux
ich hab ein wenig in die LCL hinein debuggt und ich hab eine Rückmeldung vom BugTracker.
aus lcl\postscriptcanvas.pas
aus lcl/canvas.inc
Damit hab ich meine Testanwendung erweitert.
http://bugs.freepascal.org/file_download.php?file_id=14288&type=bug
Es wird immer verrückter. Arc mit Winkeln druckt auf Linux eine gerade Linie. Das ist völlig daneben.
Code: Alles auswählen
procedure TPostScriptPrinterCanvas.Pie(EllipseX1, EllipseY1, EllipseX2,
EllipseY2, StartX, StartY, EndX, EndY: Integer);
begin
//Not implemented
end;
aus lcl\postscriptcanvas.pas
Code: Alles auswählen
{------------------------------------------------------------------------------
Method: TCanvas.Arc
Params: ALeft, ATop, ARight, ABottom, angle1, angle2
Returns: Nothing
Use Arc to draw an elliptically curved line with the current Pen.
The angles angle1 and angle2 are 1/16th of a degree. For example, a full
circle equals 5760 (16*360). Positive values of Angle and AngleLength mean
counter-clockwise while negative values mean clockwise direction.
Zero degrees is at the 3'o clock position.
------------------------------------------------------------------------------}
aus lcl/canvas.inc
Damit hab ich meine Testanwendung erweitert.
http://bugs.freepascal.org/file_download.php?file_id=14288&type=bug
Es wird immer verrückter. Arc mit Winkeln druckt auf Linux eine gerade Linie. Das ist völlig daneben.