Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2010, 16:20
p_e_j p_e_j вне форума
Прохожий
 
Регистрация: 04.04.2010
Сообщения: 1
Репутация: 10
По умолчанию Редактор графических примитивов

Уважаемые форумчане, уповаю на вашу помощь. Дано задание:

Разработать редактор графических примитивов, например, фонтов, иконок и т.п.
Требования:
• Размер пиктограммы 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: Пользуемся тегами!

Очень-очень прошу Вашей помощи. С уважением, я.

Последний раз редактировалось Admin, 04.04.2010 в 16:24.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025