Dessinez un rectangle sur bitmap !

Signaler
Messages postés
63
Date d'inscription
dimanche 22 juillet 2007
Statut
Membre
Dernière intervention
28 avril 2011
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
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

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


Composants Cindy pour Delphi
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Bonjour,

La question n'est pas très bien posée..

En complément possible sur une image chargée dans un TImage :

cantador

Procedure Tfrm_Main.FormCreate(Sender: TObject); 
Var aBMP: TBitmap; 
Begin 
  aBMP := TBitmap.Create; 
  Try 
    aBMP.Width := Image1.Width; 
    aBMP.Height := Image1.Height; 
    Image1.Picture.Assign(aBMP); 
  Finally 
    aBMP.Free; 
  End; 

End; 

Procedure Tfrm_Main.btn_DrawClick(Sender: TObject); 
Begin 
  If Image1.Picture.Graphic Is TBitmap Then 
  Begin 
    Image1.Canvas.Brush.Color := clBlue; 
    Image1.Canvas.FillRect(Rect(0,0,200,200)); 
  End; 
End;