Autor Beitrag
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 03.10.06 00:20 
ich hab mir folgendes im forum zusammengesucht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Printer.Title:='bla';
  Printer.BeginDoc;
  Printer.Canvas.Draw(0,0,Image1.Picture.Graphic);
  Printer.EndDoc;
end;

procedure TForm1.Button2Click(Sender: TObject); // "bemalt" das image
var i: Byte;
begin
  Image1.Height:= 600;
  for i:= 0 to 120 Do
  Image1.Canvas.Textout(1,i*50,IntToStr(i*50));
end;


der drucker zieht das blatt und macht dann nichts damit, kann mir jemand sagen was ich falsch mache?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 03.10.06 00:25 
Moin!

Müßte das nicht so gehen, wenn du mit .Canvas gemalt hast: :gruebel:
ausblenden Delphi-Quelltext
1:
Printer.Canvas.Draw(0,0,Image1.Picture.Bitmap);					

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 03.10.06 00:30 
nein da passiert dasselbe... :(
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Do 05.10.06 17:51 
*hochschieb*
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Fr 09.02.07 05:13 
*mal wieder hochschieb nach 4 monaten ;D*

irgendwer wird doch schonmal en bild gedruckt haben?
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Fr 09.02.07 06:56 
Und? Hast Du nach 4 Monaten nicht nochmal neu gesucht? Das Zauberwort ist SetStretchBltMode und StretchBlt weil Bildschirm (96dpi) und Druckerauflösung(~300dpi) immer unterschiedlich sind.

Thread www.delphi-forum.de/...ghlight=bild+drucken

Es gibt aber noch eine andere Möglichkeit die ich für mein Projekt schon lange verwende über eine TRichEditEx Komponente (Shareware von Jean LACOSTE), vielleicht gibts noch ähnliche Komponenten (ich hörte von Jedi).

Vorteil ist, mit nur ein paar Befehlen ist das Bild eingefügt, es scaliert sich automatisch zu der Druckerauflösung, und man kann auch eine Vorschau generieren.
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Fr 09.02.07 21:22 
ich hab das jetz so (ein wenig abgeändert da ich keine panel hab), klappt aber trotzdem nich, drucker zieht blatt und das wars

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Drucken1Click(Sender: TObject);
var i, j         : integer;
    Druckgroesse : TRect;
    oW, oH       : integer;
begin  
  printer.orientation := poPortrait;
  printer.BeginDoc;  
  Druckgroesse.Left   := 0;  
  Druckgroesse.Top    := 0;
  Druckgroesse.Right  := GetDeviceCaps(Printer.Canvas.Handle, horzres);
  Druckgroesse.Bottom := GetDeviceCaps(Printer.Canvas.Handle, vertres);
  //i := panel1.ControlCount;

//  for j := 0 to i-1 do begin;
    oW := Image1.Width;
    oH := Image1.Height;


    SetStretchBltMode(printer.Canvas.Handle, HALFTONE);
    StretchBlt(printer.Canvas.Handle, 00, Druckgroesse.Right, Druckgroesse.Bottom,
              Image1.Canvas.Handle, 00, oW, oH, SRCCopy);
    //if j < i-1 then printer.NewPage;
  //end;

  printer.EndDoc;
end;
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Sa 10.02.07 08:12 
Jetzt wollte ich es auch mal genauer wissen, unten ein Beispiel Projekt (mit genau Deinem Code) - hat auf Anhieb funktioniert. Selbst auf einem Bondrucker (Epson TMT). Vielleicht ist Dein Standard-Drucker verstellt oder sonstwie ungültig? Im Projekt auch die compilierte .exe, probier die zuerst. 2 Buttons, einmal über Standarddrucker und einmal Drucker auswählen. Wäre gut, wenn andere das auch testen, und wenn es dort auch geht, ist irgendwas bei Dir faul (vielleicht mal an einem anderen Computer testen). Oder versuch mal einen anderen Drucker...

Woran aber noch zu arbeiten ist: an der Größe, auf dem HP Deskjet druckt er mir das Bild auf die ganze Seite...

//Edit: Achso, beim ersten Mal hatte ich ein .jpg Bild ohne spezielle Konvertierung eingefügt, da hat er nix gedruckt.
Einloggen, um Attachments anzusehen!
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Sa 10.02.07 18:33 
thx, funktioniert ;D

hab gestern mal noch beim suchen herausgefunden das der drucker eben nix druckt wenn das Image zu groß ist, vllt liegts daran ich schaus mir bei gelegenheit mal ganz genau an
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 06.03.07 04:51 
ich hat grad mal wieder ein wenig zeit mich um das drucken zu kümmern

wenn ich das image zur laufzeit "bemal" und dann die obige druckerprozedur verwende geschieht nix, nehm ich jedoch das image und speicher es per Image1.Picture.Bitmap.SaveToFile(); und schmeißes dann zur entwurfszeit (so wie beim bsp von Raffo) in ein Image und drucks dann mit der selben prozedur klappts, warum?

das bild is 649 x 800 Pixel groß falls das irgendwie relevant is...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 20.03.07 01:01 
as passiert denn, wenn du den Inhalt des Images in ein Bitmap kopierts und den Canvas des Bitmaps an den Drucker schickst? Ansonsten: www.michael-puff.de/...006_06/Drucken.shtml und www.michael-puff.de/...Sonstiges/Print.html
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 20.03.07 02:04 
jop
ich bemal das bild mit Image1.Canvas
und will das dann so weitergeben an den drucker Printer.Canvas.Draw(0,0,Image1.Picture.Bitmap);

was ja dann das bild eigentlich autom auf die größe des druckers stretchen sollte

deine tuts find ich etwas umständlich, da ich so sämtliche zeichenroutinen nochmal anwerfen müsste nur halt auf den Printer.Canvas und dabei müsste ich dann noch alles auf die größe des druckers umrechnen, was mir sehr aufwendig erscheint
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Sa 24.03.07 05:58 
ich hab mal alle prozeduren die ich im netz feinden konnt durch probiert, keine hat funktioniert...

bin ich wirklich zu dumm dazu?

gibts eine dll an die ich einfach nur den canvas übergeben muss, und die das dann für mich druckt?
LGoris
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 26.03.07 22:53 
Titel: image wird nicht gedruckt
Try this:
Take a TChart component (z.b. Chart1) over the image wou will print (z.b. ImPict) and set his propertys invisible or 0(I mean: left axis, bottom axis u.s.w.). Chart1.Height = ImPict.Height, Chart1.Width = ImPict.Width, Chart1.Visible = False

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm.SBtnPrintPictureClick(Sender: TObject);
begin
  Chart1.BackImage:=ImPict.Picture;
  Chart1.Visible:=True;
  Teeprevi.ChartPreview(Form,Chart1);
  Chart1.Visible:=False;
end;


Do not forget: add the unit Teeprevi to the uses of your unit.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Sa 31.03.07 23:03 
das geht bei mir auch nicht, obwohl in der druckvorschau alles richtig dargestellt wird

hab nun aber das gefunden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var bmp: TBitmap;
begin 
 Seite1.Picture.Bitmap.SaveToFile('1.bmp');
  try
    bmp:= TBitmap.Create;
    bmp.LoadFromFile('1.bmp');
    with Printer do begin
      BeginDoc;
      Canvas.StretchDraw(Rect(200200, PageWidth - 200, PageHeight - 200), bmp);
      EndDoc;
    end;
    bmp.Destroy;
  except
    raise;
  end;
end;


das funktioniert
aber wenn ich es nicht erst auf der platte ablege sondern direkt so mache:
bmp:= Seite.Picture.Bitmap;
gehts wiedrrum nicht, warum?

Für diesen Beitrag haben gedankt: compiler93
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 01.04.07 03:55 
Ich würde ja mal ein falsches PixelFormat vermuten, wenn es aus Datei geht. Was steht da denn drin?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: So 01.04.07 04:52 
das Image.Picture.Bitmap ist pfDevice
und das bmp ist pf32Bit

ich find morgen (also das heute morgen ;D ) mal raus obs wirklich daran gelegen hat, wenn ja schrei ich erstmal ganz laut
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Mi 04.04.07 02:36 
*schrei*

lag echt die ganze zeit nur daran...