Autor Beitrag
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72

WIN 2000
D4 Prof
BeitragVerfasst: Fr 25.10.02 08:40 
hi,

probiers mal mit der copyrect-methode vom PrinterCanvas.

mfg mk2
Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Fr 25.10.02 11:37 
Nein, geht nicht.

Hier mal der Quelltextauszug. Vielleicht hab ich da irgendwo etwas vergessen.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: 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.

ausblenden 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)

:shock: ,ja du siehst es gut
So hab ich printen müssen in Delphi! Eine Schande! :autsch:

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. :wave:

_________________
Cause even though I know things won't get any better, they can certainly never get much worse!
Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Fr 25.10.02 12:42 
:welcome: Danke ich werds ausprobieren. Spätestens am Montag kann ich Euch sagen ob es funzte oder nicht. :rofl:

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
JeanvanHees
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Fr 25.10.02 16:01 
Das war ich. :mrgreen: Ich habe es mal wieder auf deutsch umgestellt. :wink2:

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Mo 28.10.02 13:01 
JeanvanHees hat folgendes geschrieben:
ausblenden 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



BeitragVerfasst: 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. :roll:
JeanvanHees
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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
:twisted: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: Di 29.10.02 13:39 
Hey, war doch nicht böse gemeint :angel:
Stay cool 8)
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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