Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Einem Image zur Laufzeit ein Bild zuweisen


Green - So 30.12.07 22:07
Titel: Einem Image zur Laufzeit ein Bild zuweisen
Hallo,

ich habe zwei Canvas TempCanvas, DrawImage: TCanvas
Jetzt wird zu Laufzeit der DrawImage die TempCanvas zugewiesen.

Delphi-Quelltext
1:
DrawCanvas := TempCanvas;                    

Die DrawCanvas ist teil eines TImage

Delphi-Quelltext
1:
DrawCanvas := Image1.Canvas;                    


jetzt wird aber nach dem zuweisen der Canvas diese nicht angezeigt, also im Image sieht man immer noch die alte Canvas...

was muss man da machen?

lG Green


Leuchtturm - So 30.12.07 22:11

Gabs da ne sowaas wie Image1.Refresh oder so?


Green - So 30.12.07 22:14

Tut nich...schon probiert...
genau so wenig wie Image.Repaint...

Ich zeichne einfach in einer Routine auf diese DrawCanvas und da funktionierts auch.
Jetzt will ich aber die DrawCanvas mit einer anderen austauschen und da haperts...


DrRzf - So 30.12.07 23:02

solltest du dann nicht das picture übergeben ? bzw die Bitmap ?
zur not mit Assign

Delphi-Quelltext
1:
 DingensCanvas.Picture := AndresDingensCanvas.Picture;                    


Yogu - So 30.12.07 23:29

Dritte Möglichkeit:
Ich mache es immer mit CopyRect.

Delphi-Quelltext
1:
Bitmap1.Canvas.CopyRect(Rect(00, Bitmap1.Width, Bitmap1.Height), Bitmap2.Canvas,Rect(00, Bitmap1.Width, Bitmap1.Height));                    


Narses - Mi 02.01.08 03:39
Titel: Re: Einem Image zur Laufzeit ein Bild zuweisen
Moin!

user profile iconGreen hat folgendes geschrieben:
was muss man da machen?
Ich würde das so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
  var
    Temp: TBitmap;
begin
  Temp := TBitmap.Create; // Objekt anlegen
  try // was auch passiert...
    Temp.Pixelformat := pf24Bit; // Farbtiefe
    Temp.Width := Image1.Width; // und Größe
    Temp.Height := Image1.Height; // setzen
    with Temp.Canvas do begin // zeichnen
      Brush.Color := clMoneyGreen; // Hintergrundfarbe
      FillRect(ClipRect); // Hintergrund füllen
      Pen.Color := clWhite; // Vordergrundfarbe
      MoveTo(0,0); // Stiftposition setzen
      LineTo(Temp.Width,Temp.Height); // Linie zeichnen
    end;
    Image1.Picture.Bitmap.Assign(Temp); // Bild zuweisen
    Image1.Invalidate; // neuzeichnen auslösen
  finally // ...auf jeden Fall
    Temp.Free; // das Objekt wieder freigeben
  end;

cu
Narses