-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDraw.pas
More file actions
125 lines (108 loc) · 3.15 KB
/
Copy pathDraw.pas
File metadata and controls
125 lines (108 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Unit Draw;
Interface
Uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.Pngimage, System.IOUtils,
Vcl.StdCtrls, Vcl.ActnMan, Vcl.ActnColorMaps;
Type
TDrawForm = class(TForm)
NoteDrawImage: TImage;
ClearCanvas: TButton;
PenColorBox: TColorBox;
Procedure FormCreate(Sender: TObject);
procedure NoteDrawImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ClearCanvasClick(Sender: TObject);
procedure PenColorBoxChange(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
DrawForm: TDrawForm;
Implementation
{$R *.dfm}
Const
FILE_IMAGE: String = '\ReMind\image.png';
Var
PenColor: TColor = clBlack;
Procedure MakeImageSameSizeAsFormIs(NoteDrawImage: TImage);
Begin
NoteDrawImage.Width := DrawForm.Width;
NoteDrawImage.Height := DrawForm.Height;
End;
Procedure TDrawForm.ClearCanvasClick(Sender: TObject);
Begin
With NoteDrawImage.Canvas do
Begin
Pen.Color := clWhite;
Brush.Color := clWhite;
Rectangle(0, 0, Width, Height);
End;
End;
Procedure SetPenColor(NoteDrawImage: TImage; ColorPicker: TComboBox);
Begin
PenColor := StringToColor(ColorPicker.Text);
End;
Procedure TDrawForm.PenColorBoxChange(Sender: TObject);
Begin
PenColor := PenColorBox.Selected;
End;
Procedure TDrawForm.FormClose(Sender: TObject; var Action: TCloseAction);
Var
Bmp: TBitmap;
Png: TPngImage;
Begin
Bmp := TBitmap.Create;
Try
Bmp.SetSize(NoteDrawImage.Canvas.ClipRect.Right, NoteDrawImage.Canvas.ClipRect.Bottom);
BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, NoteDrawImage.Canvas.Handle, 0, 0, SRCCOPY);
Png := TPngImage.Create;
Try
Png.Assign(Bmp);
Png.SaveToFile(TPath.GetDocumentsPath + FILE_IMAGE);
Finally
Png.Free;
End;
Finally
Bmp.Free;
End;
End;
Procedure SetColorPicker(ColorPicker: TComboBox);
Begin
With ColorPicker.Items do
Begin
Add('clBlack');
Add('clRed');
Add('clYellow');
Add('clGreen');
Add('clBlue');
Add('clWhite');
End;
End;
Procedure TDrawForm.FormCreate(Sender: TObject);
Var
PNG: TPNGObject;
Begin
MakeImageSameSizeAsFormIs(NoteDrawImage);
PNG := TPNGObject.Create;
PNG.LoadFromFile(TPath.GetDocumentsPath + FILE_IMAGE);
NoteDrawImage.Canvas.Draw(0, 0, PNG);
//SetColorPicker(ColorPicker);
End;
Procedure TDrawForm.NoteDrawImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Begin
With NoteDrawImage.Canvas do
Begin
If ssLeft in Shift then
Begin
Pixels[X, Y] := PenColor;
Pixels[X + 1, Y] := PenColor;
Pixels[X, Y + 1] := PenColor;
Pixels[X + 1, Y + 1] := PenColor;
End;
End;
End;
End.