Уважаемые форумчане, уповаю на вашу помощь. Дано задание:
Разработать редактор графических примитивов, например, фонтов, иконок и т.п.
Требования:
• Размер пиктограммы 8*14;
• Число цветов 16;
• на экране отобразить шаблон пиктограмм в виде клетчатого поля;
• желательна запись в файл(формат записи произвольный);
Управление:
• F2-запись (если реализована);
• F3-загрузка;
• F10-выход.
Вот что уже написано, но не работает:
Код:
var
Form1: TForm1;
img,buffer:TBitMap;
x0,y0:integer;
dwn:boolean; //нажата ли левая кнопка мыши
nowdrawing: TShape; //тип фигуры, которую рисуем
Fname:string;
procedure TForm1.FormCreate(Sender: TObject);
begin
Img:=TBitmap.Create;
buffer:=TBitmap.Create;
img.Width:=PaintBox1.Width;
buffer.Width:=PaintBox1.Width;
img.Height:=PaintBox1.Height;
buffer.Height:=PaintBox1.Height;
nowdrawing:=sPen;
dwn:=false;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then begin
img.assign(buffer);
x0:=x; y0:=y;
if SpeedButton1.Down then begin
nowdrawing:=sPen;
img.canvas.MoveTo(x,y);
end;
if SpeedButton2.Down then nowdrawing:=sFill;
dwn:=true;
img.Canvas.Pen.Color:=ColorBox1.Selected;
img.Canvas.Brush.Color:=ColorBox1.Selected;
if nowdrawing=sFill then begin
img.Canvas.FloodFill(x0,y0,img.Canvas.Pixels[x,y],fsSurface);
buffer.Assign(img);
dwn:=false;
end;
end;
paintbox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height),
img.Canvas,bounds(0,0,img.Width,img.Height));
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then dwn:=false;
buffer.Assign(img);
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
paintbox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height),
buffer.Canvas,bounds(0,0,img.Width,img.Height));
end;
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not dwn then exit;
img.assign(buffer);
if nowdrawing=sPen then begin
img.Canvas.LineTo(x,y);
buffer.Assign(img);
end;
if nowdrawing=sFill then begin
//nothing.
end;
end;
procedure TForm1.F102Click(Sender: TObject);
begin
close;
end;
Admin: Пользуемся тегами!
Очень-очень прошу Вашей помощи. С уважением, я.