AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [TImage] Fragen rund um die Canvas Komponente....
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von almdudler777 · begonnen am 2. Dez 2007 · letzter Beitrag vom 2. Dez 2007
Antwort Antwort
almdudler777

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

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

  Alt 2. Dez 2007, 20: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
Muetze1
(Gast)

n/a Beiträge
 
#2

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

  Alt 2. Dez 2007, 22:01
Zitat von almdudler777:
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....
Dann hättest du dabei eigentlich auch lesen müssen, dass du im OnPaint zeichnen musst. Auch würde das Abspeichern etc kein Problem darstellen, wenn du eine OffScreen Bitmap verwendest.

Die Paintbox ist definitv ein besserer Ansatz als ein Image als Zeichenfläche zu missbrauchen. Dafür ist es definitiv nicht gedacht.
  Mit Zitat antworten Zitat
almdudler777

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

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

  Alt 2. Dez 2007, 22:09
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

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

  Alt 2. Dez 2007, 22:49
Mein damaliges IHK Projekt wäre ein Beispiel dafür. Schau in dir den Anhang in diesem Beitrag an. Der arbeitet mit einem OffScreen Bitmap und einer PaintBox. Du würdest halt auf dem Bitmap rummalen anstatt nur damit zu werkeln.

Du benötigst zum compilieren wahrscheinlich noch diese drei Komponenten zur Farbauswahl.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz