RAJZ

Top  Previous  Next

unit Rajz;

 

interface

 

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, ExtCtrls;

 

Type

 

{  A rajzfelület alapjellemzőit leíró rekord  }

 

TStatusPaletta = record

  alapszin: LongInt;      { rajzfelület alapszine }

  rajztablaX: Word;

  rajztablaY: Word;

  tollszin: LongInt;

  tollszelesseg: integer;

  tollstylus: integer;

  tollmod: integer;

  ecsetszin: LongInt;

  ecsetstylus: integer;

  ecsetbitmap: Tbitmap;

  betunev: TFontname;

  betuszin: LongInt;

  betumeret: integer;

  betustylus: TFontStyle;

end;

 

TCanvasRect = record

  Pen      : TPen;

  Brush    : TBrush;

  CopyMode : TCopyMode;

  PenPos   : TPoint;

end;

 

Var

SPal    : TStatusPaletta;

 

Function CanvasMent(im:TCanvas):TCanvasRect;

Procedure CanvasVisszatolt(var im:TCanvas; tc: TCanvasRect);

{ sPal rajzjellemzőkkel beállitja a rajzolást }

Function RajzlapLoad(im:TImage; s: TStatusPaletta):Boolean;

{ sPal record feltöltése a rajfelület jellemzőkkel }

Function RajzlapSave(im:Timage; var s: TStatusPaletta):boolean;

{ Forrópont megjelenítés kis négyzettel }

Procedure Vegpontrajzol(im:TImage; p: TPoint; d: integer);

 

implementation

 

Function CanvasMent(im:TCanvas):TCanvasRect;

begin

With Result do

begin

   Pen     := im.Pen;

   Brush   := im.Brush;

   CopyMode:= im.CopyMode;

   PenPos  := im.PenPos;

end;

end;

 

Procedure CanvasVisszatolt(var im:TCanvas; tc: TCanvasRect);

begin

With im do

begin

   Pen     := tc.Pen;

   Brush   := tc.Brush;

   CopyMode:= tc.CopyMode;

   PenPos  := tc.PenPos;

end;

end;

 

Function RajzlapLoad(im:TImage; s: TStatusPaletta):Boolean;

begin

Try

With (im as TImage).Canvas do begin

  Pen.Color   := sPal.tollszin;

  Pen.Width   := sPal.tollszelesseg;

  Pen.Style   := TPenStyle(sPal.tollstylus);

  Brush.Color := sPal.ecsetszin;

  Brush.Style := TBrushStyle(sPal.ecsetstylus);

  Font.Name   := sPal.betunev;

  Font.Color  := sPal.betuszin;

  Font.Size   := sPal.betumeret;

  {  Map.Canvas.Font.Style  := TFontStyle(sPal.betustylus);}

end;

Result:= True;

except

  Result := False;

end;

end;

 

Function RajzlapSave(im:Timage; var s: TStatusPaletta):boolean;

begin

Try

With (im as TImage).Canvas do begin

  s.tollszin       := Pen.Color;

  s.tollszelesseg  := Pen.Width;

  s.tollstylus     := Ord(Pen.Style);

  s.ecsetszin      := Brush.Color;

  s.ecsetstylus    := Ord(Brush.Style);

  s.betunev        := Font.Name;

  s.betuszin       := Font.Color;

  s.betumeret      := Font.Size;

  {s.betustylus    := Map.Canvas.Font.Style;}

end;

Result:= True;

except

  Result := False;

end;

end;

 

{ Forrópont megjelenítés kis négyzettel }

Procedure Vegpontrajzol(im:TImage; p: TPoint; d: integer);

begin

RajzlapSave(im,sPal);

With (im as TImage).Canvas do begin

   Pen.Style:=psSolid;

   Pen.Width:=3;

   Pen.Mode:=pmNotXor;

   Rectangle(p.x-d,p.y-d,p.x+d,p.y+d);

end;

RajzlapLoad(im,sPal);

end;

 

 

end.