![]() |
[TImage] Fragen rund um die Canvas Komponente....
Hi Leute,
zuerst bin noch relativ neu in Delphi von daher kann es sein das ich mit den einfachsten Sachen noch nicht vertraut bin. Zu meinem Problem: Ich habe ein Bild (Image1) das soll als Hintergrund dienen da kommt irgendnen JPEG Bild rein und dann wird damit nichts mehr gemacht. Genau darüber kommt ein weiteres Bild (Image2) darauf soll man nun mittels Maus zeichnen können... dabei soll aber das hintere Bild sichtbar bleiben. Wenn ich aber nun ne Ellipse zeichnen lasse, wird der innere Teil Transparent, alles drumherum weiß.... Ich habe, da es ja auch hier öfters erwähnt wird auch mal die Paintbox versucht... mit dem Ergebniss das es hier funktioniert. Nur hat sie doch einige Schwächen die gute Paintbox. Zieht man nen MDI Fenster drüber her, dann verschwinden Linien und vor allem man kann die gezeichneten Sachen nicht abspeichern.... Aber das was ich machen will sollte doch grundsätzlich möglich sein oder nicht? Ich denke es liegt an einer Grundeinstellung die ich nicht kenne und die dolle Hilfe bei TurboDelphi kann man ja eh in die Tonne kloppen :) Ich hoffe hier kann mir wer helfen! MFG Daniel PS: Mein Quellcode :)
Delphi-Quellcode:
unit mZeichenebene;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls; type TZeichnenPanel = class(TForm) Image1: TImage; Pain: TPaintBox; Button1: TButton; Button2: TButton; Image2: TImage; procedure PaintBox1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Image2Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var ZeichnenPanel: TZeichnenPanel; implementation {$R *.dfm} procedure TZeichnenPanel.Button2Click(Sender: TObject); begin // end; procedure TZeichnenPanel.FormCreate(Sender: TObject); begin self.DoubleBuffered := true; end; procedure TZeichnenPanel.PaintBox1Click(Sender: TObject); begin Refresh; with self.Pain do begin Canvas.Brush.Style := bsClear; Canvas.Pen.Style := psSolid; Canvas.Pen.Color := clred; Canvas.Pen.Width := 2; Canvas.Rectangle(50,50,ClientWidth, ClientHeight); Canvas.Ellipse(1,1,ClientWidth, ClientHeight); Canvas.MoveTO(1,ClientHeight div 2); Canvas.LineTo(ClientWidth, ClientHeight div 2); Canvas.MoveTo(ClientWidth div 2, 1); Canvas.LineTo(ClientWidth div 2, ClientHeight); end; end; procedure TZeichnenPanel.Image2Click(Sender: TObject); begin Refresh; with self.Image2 do begin //Canvas.Brush.Style := bsClear; //Canvas.Pen.Style := psSolid; //Canvas.Pen.Color := clred; //Canvas.Pen.Width := 2; Canvas.Rectangle(50,50,ClientWidth, ClientHeight); Canvas.Ellipse(1,1,ClientWidth, ClientHeight); Canvas.MoveTO(1,ClientHeight div 2); Canvas.LineTo(ClientWidth, ClientHeight div 2); Canvas.MoveTo(ClientWidth div 2, 1); Canvas.LineTo(ClientWidth div 2, ClientHeight); end; end; end. |
Re: [TImage] Fragen rund um die Canvas Komponente....
Zitat:
Die Paintbox ist definitv ein besserer Ansatz als ein Image als Zeichenfläche zu missbrauchen. Dafür ist es definitiv nicht gedacht. |
Re: [TImage] Fragen rund um die Canvas Komponente....
danke dir,
also ich bin ja der Paintbox nich abgeneigt, dachte nur es geht nicht mit dem Speichern... Würdest mir erläutern wie das dann richtig gemacht wird? oder hast nen Code dafür? MFG |
Re: [TImage] Fragen rund um die Canvas Komponente....
Mein damaliges IHK Projekt wäre ein Beispiel dafür. Schau in dir den Anhang in
![]() Du benötigst zum compilieren wahrscheinlich noch ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz