Dessinez un rectangle sur bitmap !

sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011 - 20 mars 2011 à 15:36
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 21 mars 2011 à 10:44
Salut mes Amis

Je voudrais dessiner un rectangle sur Bitmap, mais les problèmes sont les suivants:
1. le rectangle ne sera pas affichée sur le bitmap!
2. l'image bitmap pichenette par drwing!
Voici tout le code:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;

type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormPaint(Sender: TObject);
private
procedure ClearScreen;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
IsDown:Boolean=False;
StartX,StartY,EndX,EndY:Integer;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ClearScreen;
EndX:=X;
EndY:=Y;
Canvas.Rectangle(StartX,StartY,EndX,EndY);
IsDown:=False;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Self.DoubleBuffered:=True; // to reduce flickering...
//Canvas.Brush.Color:=clBtnFace;
Image1.Picture.Bitmap.LoadFromFile('picture.bmp');
image1.Canvas.Brush.Style:=bsClear; // neu
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StartX:=X;
StartY:=Y;
IsDown:=True;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin

if IsDown then
begin
ClearScreen;
EndX:=X;
EndY:=Y;
image1.Canvas.Rectangle(StartX,StartY,EndX,EndY);
end;

end;


procedure TForm1.ClearScreen;
begin
Canvas.FillRect(ClientRect);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
Image1.Picture.Bitmap.LoadFromFile('picture.bmp');
end;

end. 


aider moi s'il vous plaît

merci tres bien

2 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 mars 2011 à 10:25
Salut,
Image1.Picture.Bitmap.Rectangle()
ou plus rapide:
Image1.Picture.Bitmap.Fillrect()
A+


Composants Cindy pour Delphi
0
Rejoignez-nous