Umrandung für Markierung in Image zeichnen [gelöst]

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Umrandung für Markierung in Image zeichnen [gelöst]

Beitrag von AlterMann »

Hallo Leute

Ich versuche in einem Image einen rechteckigen Bereich mit der Maus zu markieren indem ich das Rechteck in ein gleich großes Transparentes Image zeichne.
(Das deshalb) weil ich so nur ein transparentes Rechteck zeichnen muß um es wieder zu löschen, im Originalbild müßte ich die Bildpunkte zwischenspeichern)

Leider sieht man das Rechteck nur - unter Flackern - während ich die Maus bewege. Sobald ich sie loslasse Ist nur das Bild zu sehen.

Hier die betreffenden Routinen:

Code: Alles auswählen

procedure TImport.Image6MouseDown(Sender: TObject; Button: TMouseButton;//Markieren beginnen
  Shift: TShiftState; X, Y: Integer);
begin
 markieren := true;
 x1 := x; y1 := y;
end;
 
procedure TImport.Image6MouseMove(Sender: TObject; Shift: TShiftState; X,//Markieren
  Y: Integer);
begin
 if markieren then
  begin
   if markiert then
    begin
     Image6.canvas.Brush.Style:=bsclear;
     Image6.canvas.Pen.Color := Image6.Picture.Bitmap.TransparentColor;
     Image6.Canvas.Rectangle(x1o,y1o,x2o,y2o);
    end;
   x2 := x;y2 := y;
   Image6.canvas.Brush.Style:=bsclear;
   Image6.canvas.Pen.Color:=clGreen;
   Image6.canvas.Rectangle(x1,y1,x2,y2);
   x1o:=x1;x2o:=x2;y1o:=y1;y2o:=y2;
   markiert := true;
   image6.BringToFront;
  end;
end;
 
procedure TImport.Image6MouseUp(Sender: TObject; Button: TMouseButton;//Markieren beenden
  Shift: TShiftState; X, Y: Integer);
begin
 markieren := false;
end;


Hat jemand einen Tip?

Schöne Grüße
Christian
Zuletzt geändert von AlterMann am Mo 14. Mär 2011, 18:14, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Umrandung für Markierung in Image zeichnen

Beitrag von shokwave »

Damit das Rechteck dauerhaft bleibt, muss es im OnPaint-Ereignis gezeichnet werden. Hoffe das hilft weiter.
mfg Ingo

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Umrandung für Markierung in Image zeichnen

Beitrag von AlterMann »

Ja, danke. Das hat mir sehr weitergeholfen.

LG
Christian
Früher war alles besser. Und aus Holz!

Antworten