Autor Beitrag
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mi 20.12.06 19:24 
Also wenn ich mit canvas irgendwo etwas male ..
Denn bleibts leider nicht wenn ich die größer verändere oder es minimiere oder ein adneres fenster rüber packe...
Wie behalte ich das gemalte?


PS: Unser lehrer will uns das bsichen Canvas in der schule beibringen aber er hat selber keine ahnung und deswegen möchte ich ihm gerne vorm der ganzen klasse blamieren wie "gut" er doch wirklich ist ;)
Er will uns zeigen wie man linien und kreise mit Canvas macht.
Ich will Ihm zeigen wie man ein kleineres mal-programm macht.


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Mi 20.12.2006 um 19:28
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.12.06 19:29 
user profile iconSimak hat folgendes geschrieben:
Also wenn ich mit canvas irgendwo etwas male ..
Denn bleibts leider nicht wenn ich die größer verändere oder es minimiere oder ein adneres fenster rüber packe...
Wie behalte ich das gemalte?
Ich denke, Du musst es im OnPaint-Event neu zeichnen

user profile iconSimak hat folgendes geschrieben:
PS: Unser lehrer will uns das bsichen Canvas in der schule beibringen aber er hat selber keine ahnung
Und DU bist natürlich besser, wenn Du hier vorher nachfragen musst :roll:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Niko S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mi 20.12.06 19:47 
Zitat:

Ich denke, Du musst es im OnPaint-Event neu zeichnen

Wie meinst du das genau im OnPaint-Event neu Zeichnen?

Zitat:

Und DU bist natürlich besser, wenn Du hier vorher nachfragen musst :roll:

Das hat andere Gründe. Unser Lehrer tut immer auf Oberschlau...

Moderiert von user profile iconChristian S.: Quote-Tag repariert
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.12.06 20:06 
user profile iconSimak hat folgendes geschrieben:
Zitat:

Ich denke, Du musst es im OnPaint-Event neu zeichnen

Wie meinst du das genau im OnPaint-Event neu Zeichnen?
Du musst das, was vorher auf der Canvas war, auch wieder auf die Canvas drauf zeichnen.

Ich mache nicht so viel mit Grafik-Zeugs, es kann daher sein, dass es elegantere Möglichkeiten gibt, aber ich würde das als erste Idee so realisieren:

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:
27:
28:
29:
30:
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
  private
    fBuffer : TBitmap;
  end;

(* ... *)

procedure TForm1.Button1Click(Sender: TObject);
begin
  fBuffer.Canvas.Rectangle(10,10,100,100);
  paintBox1.Repaint;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  fBuffer := TBitmap.Create;
  fBuffer.Width := paintBox1.Width;
  fBuffer.Height := paintBox1.Height;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  BitBlt(paintBox1.Canvas.Handle, 0, 0,paintBox1.Width, paintBox1.Height, fBuffer.Canvas.Handle,0,0,SRCCOPY);
end;


Ich habe eine Paintbox und einen Button auf der Form. Mit dem Button wird in die PaintBox ein Quadrat gezeichnet. Allerdings nicht direkt in die Paintbox, sondern in ein Bitmap im Speicher (fBuffer). Dann veranlasse ich die PaintBox, sich neu zu zeichnen. Immer, wenn sich die PaintBox neu zeichnet, wird fBuffer auf die Canvas der Paintbox gezeichnet.

Keine Ahnung, ob das besonders elegant ist, aber es funktioniert :nixweiss:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".