was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

46 Visitors Online


 
...die X,Y Koordinaten auf einem Canvas mit einem Fadenkreuz anzeigen?
Autor: Daniel Henrique M. Carvalho
Homepage: http://www.delhmc.ubbi.com.br
[ Tip ausdrucken ]  

Tip Bewertung (33):  
     


// TPanel, TImage e TLabel components
// Insert Image into Panel...

private
   
BmpH, BmpV : TBitmap;
   OldX, OldY: Integer;
end;

var
  
RectSaved : boolean = false;

procedure TFormMain.FormCreate(Sender: TObject);
begin
  
PanelImage.DoubleBuffered := true; // This prevents that the image is blinking
  
LabelHint.Transparent := true;
  LabelHint.Font.Color := clNave;
end;

procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  
Cross(X, Y);
end;

procedure TFormMain.Cross(X, Y: Integer);
begin
  
Image.Canvas.Pen.Color := clBlack;
  // Restore last image to erase line
  
if RectSaved then
  begin
    
Image.Canvas.CopyRect(Rect(OldX - 5, 0, OldX + 5, BmpV.Height),
    BmpV.Canvas, Rect(0,0,BmpV.Width,BmpV.Height));
    Image.Canvas.CopyRect(Rect(0, OldY - 5, BmpH.Width, OldY + 5),
    BmpH.Canvas, Rect(0,0,BmpH.Width,BmpH.Height));
    BmpH.Free;
    BmpV.Free;
  end;
  // Now save the image at new position for each line
  // horizontal line
  
BmpH := TBitmap.Create;
  BmpH.Width := Image.Width;
  BmpH.Height := 10;
  BmpH.Canvas.CopyRect(Rect(0,0,BmpH.Width,BmpH.Height),
  Image.Canvas,Rect(0, Y - 5, BmpH.Width, Y + 5));
  // Vertical line
  
BmpV := TBitmap.Create;
  BmpV.Width := 10;
  BmpV.Height := Image.Height;
  BmpV.Canvas.CopyRect(Rect(0,0,BmpV.Width,BmpV.Height),
                 Image.Canvas,Rect(X - 5, 0, X + 5, BmpV.Height));

  // Now draw the current position
  
Image.Canvas.MoveTo(0, Y);
  Image.Canvas.LineTo(Image.Width, Y);
  Image.Canvas.MoveTo(X, 0);
  Image.Canvas.LineTo(X, Image.Height);

  RectSaved := true;
  OldX := X;
  OldY := Y;

  LabelHint.Left := X + 36;
  LabelHint.Top := Y - 15;
  LabelHint.Caption := '(X:' + IntToStr(X) + ' x Y:' + IntToStr(Y) +')';
end;

 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners