Autor |
Beitrag |
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 25.10.02 08:10
Wer kann mir sagen wie ich das Printer.Canvas auf ein Bitmap.Canvas kopieren kann? Mit Assign geht das nicht!
Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
mk2
      
Beiträge: 72
WIN 2000
D4 Prof
|
Verfasst: Fr 25.10.02 08:40
hi,
probiers mal mit der copyrect-methode vom PrinterCanvas.
mfg mk2
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 25.10.02 11:37
Nein, geht nicht.
Hier mal der Quelltextauszug. Vielleicht hab ich da irgendwo etwas vergessen.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| BMP := TBitmap.Create; BMP.Width := Printer.PageWidth; BMP.Height := Printer.PageHeight; R.TopLeft := Point(0, 0); R.BottomRight := Point(BMP.Width, BMP.Height); BMP.Canvas.CopyRect(R, Printer.Canvas, R); BMP.SaveToFile('Bitmap'+inttostr(currPage)+'.bmp'); BMP.Free; |
Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Fr 25.10.02 11:50
Als LETZTES retmittel hab ich das hier für dich.
Das hier ist aber umgekehrt, also von Canvas auf printer.canvas.
Quelltext 1: 2: 3: 4: 5:
| StretchBlt(Printer.Canvas.Handle,0,500, Trunc(Mainform.Image2.Width*29.5), Trunc(Mainform.Image2.Height*29.5), Mainform.Image2.Canvas.Handle,0,0,Mainform.Image2.Width*10, Mainform.Image2.Height*10,SRCCOPY) |
 ,ja du siehst es gut
So hab ich printen müssen in Delphi! Eine Schande!
Was extrem wichtig ist, ist das du die werter image.width..etc.
mit einen wert(<>1) multipliziert.
Sonst kriegst du ein lehres schirm.
Ich denke du mußt das bild kleiner machen(Ich mache es gerade größer), also multiplizieren mit reals (0.2,0.4...ausprobieren), und dan das was du da rauskriegst Truncen (Trunc(int/real)).
Gebrauch diese #$&*-function nur wenns nicht anders kann. 
_________________ Cause even though I know things won't get any better, they can certainly never get much worse!
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 25.10.02 12:42
 Danke ich werds ausprobieren. Spätestens am Montag kann ich Euch sagen ob es funzte oder nicht. 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Fr 25.10.02 12:44
Hey, deine signatur...
Die hat jemand anders hier auch, aber nur in english...
oder stimmt hier etwas nicht 
_________________ Cause even though I know things won't get any better, they can certainly never get much worse!
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 25.10.02 16:01
Das war ich.  Ich habe es mal wieder auf deutsch umgestellt. 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 28.10.02 13:01
JeanvanHees hat folgendes geschrieben: | Quelltext 1: 2: 3: 4: 5:
| StretchBlt(Printer.Canvas.Handle,0,500, Trunc(Mainform.Image2.Width*29.5), Trunc(Mainform.Image2.Height*29.5), Mainform.Image2.Canvas.Handle,0,0,Mainform.Image2.Width*10, Mainform.Image2.Height*10,SRCCOPY) | |
Tut mir leid so geht es nicht. Ich möchte kein Image auf einen Printer drucken, sondern genau umgekehrt. Ich möchte den Inhalt des Drucker-Canvas auf ein Bitmap kopieren.
Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 28.10.02 13:26
Dann vertausch die Parameter. Aber was macht das für einen Sinn? Bevor es auf dem Printer-Canvas landet muß es ja irgendwo hierkommen. Warum holst du es dir nicht auch von der Quelle für das Printer-Canvas? Das Printer-Canvas ist ja wohl eigentlich die Endstation. 
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Mo 28.10.02 13:38
@ Luckie
Amen!
_________________ Cause even though I know things won't get any better, they can certainly never get much worse!
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Di 29.10.02 13:27
Ich möchte ein Preview für ein (Rx)RichEdit erstellen. Das soll genauso aussehen wie der spätere Ausdruck. Ich habe zwar eine Previewfunktion, aber die hat eine Fehlerhafte Darstellung. Ähnlich der des WordPad.
Was liegt also näher auf ein Printer.Canvas zu drucken und das ganze anschließend in ein Bitmap zu transportieren und dann zur Anzeige zu bringen.
@Luckie
 Parameter tauschen? Rate mal was ich wohl gemacht habe? Und es geht trotzdem nicht.
@Luckie und JeanvanHees
 Wenn ich es nicht bräuchte, hätte ich wohl kaum diesen Thread gestartet. Bevor Ihr also das nächste mal andere Leute mit irgendwelchen Kommentaren abschmettert, fragt lieber vorher wieso, weshalb und warum jemand diese Frage stellt.
Also, wie kann ich ein Printer.Canvas auf ein Bitmap.Canvas kopieren?
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 29.10.02 13:36
@Sven:
Zitat: |
Bevor Ihr also das nächste mal andere Leute mit irgendwelchen Kommentaren abschmettert,
|
Wo habe ich etwas abgeschmettert?
Zitat: |
fragt lieber vorher wieso, weshalb und warum jemand diese Frage stellt
|
Und genau das habe ich gemacht, als ich dich nach dem Sinn gefragt habe.
Ändert aber nichts an meinen theoretischen Überlegungen. Die Quelle ist das RichEdit, das Ziel ist einmal das Printer.Canvas und einmal das Vorschau-Canvas. Auf die gleiche Art und Weise wie du es auf das Printer.Canvas bekommst, müßtest du es auch auf ein beliebiges anders Canvas bekommen und zwar mit dem RichEdit als Quelle, hat ja schließlich auch beim Printer.Canvas geklappt.
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Di 29.10.02 13:39
Hey, war doch nicht böse gemeint
Stay cool
Ich habe jedoch keine lösung;
Es ist nicht einfach in Delphi so mit den printer.canvas rum zu spielen, darum haben wir uns gefragt warum du das den so machen muß.

_________________ Cause even though I know things won't get any better, they can certainly never get much worse!
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Di 29.10.02 16:57
Nein, ich möchte es von dem Printer.Canvas habe. Ich will es EXAKT so wie auf dem Drucker haben.
Ich habe mir die Printer.pas von Delphi angesehen. Printer.Canvas ist ein direkter Nachfahre von TCanvas.
@JeanvanHees
Ich habe das Problem auch schon gehabt, als ich von einem selbst erzeugtem TCanvas etwas auf ein TBitmap kopieren wollte.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Di 29.10.02 17:14
Haßt du dran gedacht das das image auf den printer.canvas supergroß ist?
Di function die ich dich gegeben habe hat noch andere versionen.
Hier ist eine link mit mehr informationen über die function
www.allapi.net/apilist/StretchBlt.shtml
_________________ Cause even though I know things won't get any better, they can certainly never get much worse!
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mi 30.10.02 10:03
Das die Ergebnis-Bitmaps unter umständen riesig wird weiß ich 31 MB sind nicht von schlechten Eltern. Erzeugt werden diese auch, nur ohne Inhalt.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|