Entwickler-Ecke

Windows API - GrafikDruck Skalieren


schulle - So 11.05.03 20:57
Titel: GrafikDruck Skalieren
Guten tag.

Meinem Problem liegt folgender Quelltext zugrunde:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
begin
  if printdialogQC.Execute then
    Begin
    Datei:=workdir+'Print.prt';
    temp:=TStringlist.Create;
    temp.LoadFromFile(Datei);
    for i:=0 to temp.Count-1 do temp[i]:=XORString(temp[i],'abc123');
    temp.SaveToFile(Datei);
    temp.Free;
    with Printer do
    begin
      BeginDoc;
      Struktogramm1P.PaintTo(Handle,610,10);
      EndDoc;
    end;
  end;
end;

Nach dem obengeschrieben funktioniert zwar das ausdrucken von grafiken die auf einem panel sind-aber diese sind bei einer auflösunmg von 600x600 nur etwa 4x4cm groß-ich hätte damit aber gern das ganze blatt gefüllt! kann mir jemand helfen wie ich das vergrößern kann!?

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Alibi - So 11.05.03 21:06

Hi,
du hattest schonmal ein Thread gestartet, wo es ums Drucken ging. Ich habe dir dort alle nötigen Funktionen genannt, die auch weitaus einfacher anzuwenden sind, als das, was du da versuchst. Unter anderem hab ich dort auch die Funktion SetMapMode genannt.


schulle - So 11.05.03 21:11

schön und gut-aber egal welche einstellung ich über setmapmode vornehme-es sieht immer gleich aus! nützt mir also nicht viel


Alibi - So 11.05.03 21:17

Das mag an deiner seltsamen Methode liegen, mit der du momentan druckst.


schulle - So 11.05.03 21:19

mag ja sein-aber so druckt er wenigstens! nur eben nicht so wie ich es gern hätte!


schulle - So 11.05.03 21:34

Und wie sieht es mit der Variante aus-kann man hiermit das besser einstellen? die druckt nämlich auch-aber eben auch zu klein!

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
begin
    Datei:=workdir+'test4.stg';
    temp:=TStringlist.Create;
    temp.LoadFromFile(Datei);
    for i:=0 to temp.Count-1 do temp[i]:=XORString(temp[i],'abc123');
    temp.SaveToFile(Datei);
    temp.Free;

    with Printer do
    begin
      BeginDoc;
      Struktogramm1P.PaintTo(Handle, 10, 10);
      EndDoc;
    end;
End;

ist das gleiche jetzt was oben steht-hab das oben mittlerweile geändert!
trotzdem ist mein problem nicht gelöst!

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Alibi - So 11.05.03 23:00

Jemine, nungut, egal, hier die Lösung.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  DestRec: TRect;
begin
  DestRec := Panel123.Canvas.ClipRect;
  DestRec.Top := - DestRec.Top;
  destRec.Bottom := - DestRec.Bottom;
  Printer.BeginDoc;
  SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);
  Printer.Canvas.CopyRect(DestRec,Panel123.Canvas,Panel123.Canvas.ClipRect);
  Printer.EndDoc;
end;

Fertig, das ganze ist ungetestet, aber das ist auf jeden Fall ein möglicher Weg.
Hoffe, du versuchst das wenigstens nachzuvollziehen.