const
ARROWCLR = clBlack;
AXISCLR = clBlue;
BKCOLOR = clBtnFace;
DOTCLR = clRED;
FONTCLR = clGreen;
LEN_X = 800;
LEN_Y = 495;
ORG_X = 30;
ORG_Y = 30;
SCALE = 17;
MARKERLEN = 10;
R = 2;
//
procedure DrawAxes(Canvas: TCanvas; Origin: TPoint; leny, lenx: Integer);
procedure DrawXAxisArrow;
var
pts: array of TPoint;
begin
setlength(pts, 4);
pts[0].X := LEN_X;
pts[0].Y := Canvas.ClipRect.Bottom - ORG_Y - 5;
pts[1].X := LEN_X + 10;
pts[1].Y := Canvas.ClipRect.Bottom - ORG_Y;
pts[2].X := LEN_X;
pts[2].Y := Canvas.ClipRect.Bottom - ORG_Y + 5;
pts[3].X := LEN_X;
pts[3].Y := Canvas.ClipRect.Bottom - ORG_Y - 5;
Canvas.Pen.Color := ARROWCLR;
Canvas.Polyline(pts);
Canvas.Brush.Color := ARROWCLR;
Canvas.FloodFill(LEN_X + 1, Canvas.ClipRect.Bottom - ORG_Y - 4, ARROWCLR,
fsBorder);
Canvas.Brush.Color := BKCOLOR;
end;
procedure DrawYAxisArrow;
var
pts: array of TPoint;
begin
setlength(pts, 4);
pts[0].X := ORG_X - 5;
pts[0].Y := Canvas.ClipRect.Bottom - LEN_Y - ORG_Y;
pts[1].X := ORG_X;
pts[1].Y := Canvas.ClipRect.Bottom - LEN_Y - ORG_Y - 10;
pts[2].X := ORG_X + 5;
pts[2].Y := Canvas.ClipRect.Bottom - LEN_Y - ORG_Y;
pts[3].X := ORG_X - 5;
pts[3].Y := Canvas.ClipRect.Bottom - LEN_Y - ORG_Y;
Canvas.Pen.Color := ARROWCLR;
Canvas.Polyline(pts);
Canvas.Brush.Color := ARROWCLR;
Canvas.FloodFill(ORG_X - 5 + 1, Canvas.ClipRect.Bottom - LEN_Y - ORG_Y - 1,
ARROWCLR, fsBorder);
Canvas.Brush.Color := BKCOLOR;
end;
begin
Canvas.Brush.Color := BKCOLOR;
Canvas.FillRect(Canvas.ClipRect);
Canvas.Pen.Color := AXISCLR;
Canvas.MoveTo(Origin.X, Origin.Y);
Canvas.LineTo(Origin.X, leny);
DrawYAxisArrow;
Canvas.Pen.Color := AXISCLR;
Canvas.MoveTo(Origin.X, Origin.Y);
Canvas.LineTo(lenx, Origin.Y);
DrawXAxisArrow;
end;
procedure DrawHorzMarker(Canvas: TCanvas; Left: TPoint; len: Integer);
begin
Canvas.Pen.Color := AXISCLR;
Canvas.MoveTo(Left.X, Left.Y);
Canvas.LineTo(len, Left.Y);
end;
procedure DrawVerMarkers(Canvas: TCanvas; Top: TPoint; len: Integer);
begin
Canvas.Pen.Color := AXISCLR;
Canvas.MoveTo(Top.X, Top.Y);
Canvas.LineTo(Top.X, len);
end;
procedure DrawXAxisNumbers(Canvas: TCanvas; TopLeft: TPoint; Number: Integer);
begin
Canvas.Font.Color := FONTCLR;
Canvas.TextOut(TopLeft.X - 5, TopLeft.Y + 5, IntToStr(Number));
end;
procedure DrawYAxisNumbers(Canvas: TCanvas; TopLeft: TPoint; Number: Integer);
begin
Canvas.Font.Color := FONTCLR;
Canvas.TextOut(TopLeft.X - 15, TopLeft.Y - 6, IntToStr(Number));
end;
procedure DrawPoint(Canvas: TCanvas; Center: TPoint; Radius: Integer);
var
rect: TRect;
begin
Canvas.Pen.Color := DOTCLR;
Canvas.Brush.Color := DOTCLR;
rect.Left := Center.X - Radius;
rect.Top := Center.Y - Radius;
rect.Right := Center.X + Radius;
rect.Bottom := Center.Y + Radius;
Canvas.Ellipse(rect);
end;
function Coordinates2Pixel(Origin, cords: TPoint; Interval: Integer): TPoint;
begin
result.X := Origin.X + (cords.X * Interval);
result.Y := Origin.Y - (cords.Y * Interval);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Origin: TPoint;
cntHorzMarkers: Integer;
cntVerMarkers: Integer;
i: Integer;
pt: TPoint;
begin
pt.X := 0;
pt.Y := 0;
Bmp := TBitmap.Create;
Bmp.Width := Paintbox1.Width;
Bmp.Height := Paintbox1.Height;
Origin.X := ORG_X;
Origin.Y := Bmp.Height - ORG_Y;
DrawAxes(Bmp.Canvas, Origin, Origin.y - LEN_Y, LEN_X);
cntHorzMarkers := LEN_Y div SCALE;
for i := 1 to CntHorzMarkers - 1 do
begin
pt.X := Origin.X - (MARKERLEN div 2);
pt.Y := Origin.Y - (SCALE * i);
DrawHorzMarker(Bmp.Canvas, pt, Origin.X + (MARKERLEN div 2));
DrawYAxisNumbers(Bmp.Canvas, pt, i);
end;
cntVerMarkers := (LEN_X - ORG_X) div SCALE;
for i := 1 to cntVerMarkers do
begin
pt.X := Origin.X + (SCALE * i);
pt.Y := Origin.Y + (MARKERLEN div 2);
DrawVerMarkers(Bmp.Canvas, pt, Origin.Y - (MARKERLEN div 2));
DrawXAxisNumbers(Bmp.Canvas, pt, i);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(Bmp);
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
BitBlt(Paintbox1.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height,
Bmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Origin: TPoint;
pt: TPoint;
begin
Origin.X := ORG_X;
Origin.Y := Bmp.Height - ORG_Y;
pt.X := StrToInt(Edit1.Text); // X Punkt Eingabe
pt.Y := StrToInt(Edit2.Text); // Y Punkt Eingabe
pt := Coordinates2Pixel(Origin, pt, SCALE);
DrawPoint(Bmp.Canvas, pt, R);
Paintbox1.Repaint;
end;

Create Chart Points
Abonnieren
Posts (Atom)
Beliebte Posts
-
Windows Key Sniffer 0.82 - Update 08/2024 Der Windows Key Sniffer hat mir im Laufe der Zeit viel Arbeit erspart und unterstützt, viele Wi...
-
Network Source Code Update Source Code Network Update : https://asciigen.blogspot.com/p/network.html Send Message 1.0 Source Server Client ...
-
Windows Defender Bypass Version 0.75 - Update 11/2024 Den Windows 10-eigenen Virenschutz Defender kann man auf mehreren Wegen abschalt...
-
ASCii GIF Animator Update Version 0.68 (32 bit) - 11/2024 Bei dieser überarbeiteten Version ist die Kompatibilität zu den verschiedenen...
-
MD5 Hacker v.0.26 - Update 08.2024 MD5 Hashs sollten eigentlich nicht entschlüsselt werden können. Jedoch gibt es Tools, mit welchen auch ...
-
Host Editor Version 0.65 - Update 01/2025 Hosts File Editor allows for the easy editing of host files and backup creation. Create your ...
-
Dir Sniffer Version 0.11 - Update 02/2025 Dir Sniffer ist ein kleines aber nützliches Tool um herauszufinden, was ihr Programm auf ihrem...
-
Oldskool Font Generator v.0.29 - Update 11/2023 Das Tool stell 508 Bitmap Fonts zu Verfügung. Eigene Fonts können integriert werden, sie...
-
Hard Crypter 0.19 - Update 12/2023 Mit diesem Tool können Sie jede beliebige Datei auf dem Windows-System verschlüsseln. Die Byte-Erse...
Keine Kommentare:
Kommentar veröffentlichen