|
Registriert seit: 6. Apr 2003 1 Beiträge |
#1
Ich habe ein recht einfachen Malprogramm programiert und komme überhaupt nicht mit der druckfuntion klar.
Und zwar male ich ja immer auf die image datei und diese soll der drucker nachher ausdrucken. Ich gebe euch mal den quelltext und dann könnt ihr mir vielleicht sagen warum immer nur eine leere seite gedruckt wird
Delphi-Quellcode:
Vielen Dank!!!!!
unit mMalprogramm;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Buttons, StdCtrls, Printers; type TForm1 = class(TForm) Image1: TImage; Panel1: TPanel; NewButton: TSpeedButton; OpenButton: TSpeedButton; SaveButton: TSpeedButton; PenButton: TSpeedButton; LineButton: TSpeedButton; RectButton: TSpeedButton; CircleButton: TSpeedButton; EllipseButton: TSpeedButton; PenColorButton: TSpeedButton; BrushColorButton: TSpeedButton; ExitButton: TSpeedButton; PrinterInfoButton: TSpeedButton; PrintButton: TSpeedButton; ComboBox1: TComboBox; ComboBox2: TComboBox; ColorDialog1: TColorDialog; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; PrintDialog1: TPrintDialog; procedure ExitButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure PenButtonClick(Sender: TObject); procedure LineButtonClick(Sender: TObject); procedure RectButtonClick(Sender: TObject); procedure CircleButtonClick(Sender: TObject); procedure EllipseButtonClick(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure PenColorButtonClick(Sender: TObject); procedure BrushColorButtonClick(Sender: TObject); procedure OpenButtonClick(Sender: TObject); procedure SaveButtonClick(Sender: TObject); procedure NewButtonClick(Sender: TObject); procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure ComboBox2DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure PrintButtonClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} var Grafikart : Integer; Stiftart : TPenStyle; Pinselart : TBrushStyle; Zeichnen : Boolean; Stiftfarbe,Pinselfarbe : TColor; x0,y0,x1,y1 : Integer; procedure TForm1.ExitButtonClick(Sender: TObject); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin Grafikart:=1; Stiftfarbe:=clBlack; Pinselfarbe:=clBlack; Stiftart:=psSolid; Pinselart:=bsClear; Image1.Canvas.Pen.Color:=Stiftfarbe; ComboBox1.ItemIndex:=0; Pinselart:=bsClear; ComboBox2.itemIndex:=1; end; procedure TForm1.PenButtonClick(Sender: TObject); begin Grafikart:=1; end; procedure TForm1.LineButtonClick(Sender: TObject); begin Grafikart:=2; end; procedure TForm1.RectButtonClick(Sender: TObject); begin Grafikart:=3; end; procedure TForm1.CircleButtonClick(Sender: TObject); begin Grafikart:=4; end; procedure TForm1.EllipseButtonClick(Sender: TObject); begin Grafikart:=5; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Zeichnen:=True; x0:=x; y0:=y; x1:=x; y1:=y; with Image1.Canvas do begin Pen.Color:=Stiftfarbe; Pen.Style:=Stiftart; Brush.Color:=Pinselfarbe; Brush.Style:=Pinselart; Moveto(x,y); if Grafikart=1 then Pen.Mode:=pmCopy else Pen.Mode:=pmNotXor; end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var r,a,b : LongInt; begin if Zeichnen then with Image1.Canvas do begin Case Grafikart of 1 : Lineto(x,y); 2 : begin MoveTo(x0,y0); LineTo(x1,y1); MoveTo(x0,y0); LineTo(x,y); end; 3 : begin Rectangle(x0,y0,x1,y1); Rectangle(x0,y0,x,y); end; 4 : begin r:=Round(Sqrt(Sqr(x1-x0)+Sqr(y1-y0))); Ellipse(x0-r,y0-r,x0+r,y0+r); r:=Round(Sqrt(Sqr(x-x0)+Sqr(y-y0))); Ellipse(x0-r,y0-r,x0+r,y0+r); end; 5 : begin a:=Round(Sqrt(2)*(x1-x0)); b:=Round(Sqrt(2)*(y1-y0)); Ellipse(x0-a,y0-b,x0+a,y0+b); a:=Round(Sqrt(2)*(x-x0)); b:=Round(Sqrt(2)*(y-y0)); Ellipse(x0-a,y0-b,x0+a,y0+b); end; end; x1:=x; y1:=y; end; end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var r,a,b : LongInt; begin Zeichnen:=False; with Image1.Canvas do begin Pen.Mode:=pmCopy; Case Grafikart of 2: begin MoveTo(x0,y0); LineTo(x,y); end; 3: Rectangle(x0,y0,x1,y1); 4: begin r:=Round(Sqrt(Sqr(x1-x0)+Sqr(y1-y0))); Ellipse(x0-r,y0-r,x0+r,y0+r); end; 5: begin a:=Round(Sqrt(2)*(x-x0)); b:=Round(Sqrt(2)*(y-y0)); Ellipse(x0-a,y0-b,x0+a,y0+b); end; end; end; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin Case ComboBox1.ItemIndex of 0 : Stiftart:=psSolid; 1 : Stiftart:=psDash; 2 : Stiftart:=psDot; 3 : Stiftart:=psDashDot; 4 : Stiftart:=psDashDotDot; end; end; procedure TForm1.ComboBox2Change(Sender: TObject); begin Pinselart:=TBrushStyle(ComboBox2.ItemIndex); end; procedure TForm1.PenColorButtonClick(Sender: TObject); begin if ColorDialog1.Execute then Stiftfarbe:=ColorDialog1.Color; end; procedure TForm1.BrushColorButtonClick(Sender: TObject); begin if ColorDialog1.Execute then Pinselfarbe:=ColorDialog1.Color; end; procedure TForm1.OpenButtonClick(Sender: TObject); begin if OpenDialog1.Execute then Image1.Picture.LoadFromFile(OpenDialog1.FileName); end; procedure TForm1.SaveButtonClick(Sender: TObject); begin if SaveDialog1.Execute then Image1.Picture.SaveToFile(SaveDialog1.FileName); end; procedure TForm1.NewButtonClick(Sender: TObject); begin with image1.Canvas do begin Pen.Color:=clWhite; Pen.Style:=psSolid; Brush.Color:=clWhite; Brush.Style:=bsSolid; Rectangle(0,0,Image1.Width, Image1.height); end; end; procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with ComboBox1.Canvas do begin Pen.Color:=clBlack; Pen.Style:=TPenStyle(Index); Brush.Color:=clWhite; FillRect(Rect); MoveTo(Rect.Left+5,Rect.Top+ComboBox1.ItemHeight div 2); LineTo(Rect.Right-5,Rect.Top+ComboBox1.ItemHeight div 2); end; end; procedure TForm1.ComboBox2DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with ComboBox2.Canvas do begin Pen.Color:=clBlack; Pen.Style:=psSolid; Brush.Color:=clBlack; Brush.Style:=TBrushStyle(Index); Rectangle(Rect.Left+1,Rect.Top+1,Rect.Right-1,Rect.Bottom-1) end; end; procedure TForm1.PrintButtonClick(Sender: TObject); begin printer.begindoc; printer.canvas.draw(1, 1, Image1.Picture.Graphic ); printer.enddoc; end; end. |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |