AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Microsoft Print to PDF -> rectangle -> border fehlerhaft
Thema durchsuchen
Ansicht
Themen-Optionen

Microsoft Print to PDF -> rectangle -> border fehlerhaft

Ein Thema von bernau · begonnen am 10. Aug 2023 · letzter Beitrag vom 11. Aug 2023
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.305 Beiträge
 
Delphi 12 Athens
 
#1

AW: Microsoft Print to PDF -> rectangle -> border fehlerhaft

  Alt 11. Aug 2023, 12:03
Ich will euch mal an meinen weiteren Versuchen teilhaben lassen.

Rectangle und Fillrect haben in der resultierenden PDF unterschiedliche Abmaße.

Auf dem Bildschirm hat das gelbe Rechteck (mit Fillrect gezeichnet) genau die gleiche Breite wie das Rechteck, welches mit Rectangle gezeichnet wurde.

In der PDF sieht man bei den Rechtecken, die mit einer ungraden Penbreite gezeichnet werden, einen leichten Versatz. Pen 0 und 1 ist sowiso nicht zu gebrauchen. aber bei Pen 3,5,7,9 sieht man (wenn man vergrößert) diesen unschönen schwarzen strich.

Also: Die Kombination aus rectangle und fillrect auf dem Bildschirm ist OK. Diese Kombination sollte aber nicht in einer PDF und für eine Druckvorstufe verwendet werden. Da kann es dann unschöne Überraschungen geben.

Delphi-Quellcode:
var
  lRect_Base: TRect;
  lRect_FillRect:TRect;
begin
  aCanvas.Pen.Color := clBlack;
  aCanvas.Pen.Mode := pmCopy;
  aCanvas.font.Height := 20;
  lRect_Base.Create(0, 0, 40, 80);
  lRect_Base.Offset(50, 100);

  for var a := 0 to 9 do
    begin
      lRect_Base.Offset(50, 0);
      // Titel schreiben
      aCanvas.Brush.Style := bsClear;
      aCanvas.TextOut(lRect_Base.Left,lRect_Base.Top-30,'Pen='+a.ToString);
      //rectangle mit schwarzem Rahmen - grün
      aCanvas.Brush.Style := bsSolid;
      aCanvas.Brush.Color := clGreen;
      aCanvas.Pen.Width := a;
      aCanvas.Rectangle(lRect_Base);
      //Fillrect mit gleicher Breite und Höhe - Rot
      lRect_FillRect := lRect_Base;
      lRect_FillRect.Offset(0, 30);
      aCanvas.Brush.Color := clRed;
      aCanvas.fillrect(lRect_FillRect);
      //Fillrect mit angepasster Breite und Höhe um die Pen.width vom Rectangle auszugleichen - Gelb
      lRect_FillRect.Offset(0, 30);
      lRect_FillRect.left := lRect_FillRect.left - a div 2;
      lRect_FillRect.width := lRect_FillRect.Width + ((a-1) div 2);
      aCanvas.Brush.Color := clyellow;
      aCanvas.fillrect(lRect_FillRect);
    end;
end;
Die PNG ist ein Screenshot vom Programm.
Angehängte Grafiken
Dateityp: png Bild_2023-08-11_125604215.png (2,3 KB, 13x aufgerufen)
Angehängte Dateien
Dateityp: pdf testmspdf6.pdf (78,0 KB, 4x aufgerufen)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (11. Aug 2023 um 12:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Microsoft Print to PDF -> rectangle -> border fehlerhaft

  Alt 11. Aug 2023, 14:29
Ohne es selbst getestet zu haben: experimentier doch einmal mit einem geometrischen Stift und Stil PS_INSIDEFRAME, also mit ExtCreatePen.
Wenn Du mit GDI zeichnest, dann hast Du immer das Problem, daß Du nur einen Pixel Auflösung bekommst. Für einen Drucker kann das eventuell aber mehr als einen Pixel ausmachen, je nach dem, wie Du deine Zeichnung an die Druckauflösung anpaßt. MS Print to PDF arbeitet standardmäßig mit 300 PPI, wenn ich das recht in Erinnerung habe.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz