Einzelnen Beitrag anzeigen

Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Innerhalb eines Image eine "unsichtbare" Linie

  Alt 24. Jan 2007, 14:26
Du könntest das z.B. so lösen:

Es ist ziemlich ähnlich zu deinem Code, nur werden zuerst gezeichnete Linien wieder "entfernt".
Eben durch erneutes Zeichnen mittels Pen.Mode - pmNotXor.

Hoffentlich hilft dir das weiter
Lg Oli

Delphi-Quellcode:
var
  StartPosition: TPoint;
  EndPosition: TPoint;
  DoNotRunFirstTime: Boolean;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) then
  begin
    StartPosition := Point(X, Y);
    DoNotRunFirstTime := True;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (ssLeft in Shift) then
    with TImage(Sender).Picture.Bitmap.Canvas do
    begin
      Pen.Mode := pmNotXor;

      if (not DoNotRunFirstTime) then
      begin
        MoveTo(StartPosition.X, StartPosition.Y);
        LineTo(EndPosition.X, EndPosition.Y);
      end else
         DoNotRunFirstTime := False;

      EndPosition := Point(X, Y);

      MoveTo(StartPosition.X, StartPosition.Y);
      LineTo(EndPosition.X, EndPosition.Y);
    end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) then
    with TImage(Sender).Picture.Bitmap.Canvas do
    begin
      MoveTo(StartPosition.X, StartPosition.Y);
      LineTo(EndPosition.X, EndPosition.Y);
    end;
end;
Oliver Hanappi
  Mit Zitat antworten Zitat