![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Уважаемые форумчане, уповаю на вашу помощь. Дано задание:
Разработать редактор графических примитивов, например, фонтов, иконок и т.п. Требования: • Размер пиктограммы 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, 04.04.2010 в 16:24. |