Einzelnen Beitrag anzeigen

almdudler777

Registriert seit: 4. Sep 2007
8 Beiträge
 
Delphi 2010 Professional
 
#1

[TImage] Fragen rund um die Canvas Komponente....

  Alt 2. Dez 2007, 19:50
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.
  Mit Zitat antworten Zitat