Comment effacer le dessin dans un Canvas ?
Bonjour,
J'ai un projet à faire, qui est un jeu de rôle, dans lequel je dois faire une barre de progression lorsqu'on clique sur un icone de construction. Don j'ai créé une image, dans laquelle j'ai mis un btmp, et une succession de rectangles verts montrent l'avancement de la progression. Tout marche bien sauf que je n'ai pas trouver la technique pour suprimer ces rectangles, de manière à retrouver mon btmp sans aucun rectangles verts dessus. J'esprère que j'ai été à peu près clair!!
Mon code est le suivant:
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
nbre: integer;
truc: boolean;
implementation
procedure delay(delai:Double);
Var HeureDepart:TDateTime;
begin
HeureDepart:=now;
Delai:=delai/24/60/60/1000;
repeat
Application.ProcessMessages;
Until Now>HeureDepart+Delai;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Visible:=true;
nbre:=0;
image1.Canvas.Pen.Color:=clgreen;
image1.Canvas.Brush.color:=clgreen;
while (nbre<260) and (truc=false) do
begin
image1.Canvas.Rectangle(nbre,0,1,17);
nbre:=nbre+1;
delay(30);
end;
if nbre=260 then label1.Visible:=true;
if (truc=true) then truc:=false;
image1.Visible:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
truc:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
truc:=false;
image1.Visible:=false;
Label1.Visible:=false;
end;
end. |