Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Графический редактор в Delphi, Помощь д/создания графического редактора 
:(
    Опции темы
Inonia
Дата 13.11.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.10.2012

Репутация: нет
Всего: нет



Здравствуйте. Как организовать в графическом редакторе возможность выбора толщины линии, типа закраски (с соответствующими изображениями), работу инструмента ластик?
PM MAIL   Вверх
MetalFan
Дата 13.11.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Наработки/соображения есть?
Если нет, то тема или в работу или в центр помощи поедет.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alexeis
Дата 13.11.2012, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  У класса TCanvas есть свойство Pen у него толщина линии. Заливку можно сделать при помощи FloodFill , ну а ластик в простейшем случае рисовать как прямоугольник белого цвета.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 13.11.2012, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Alexeis, думаешь это поможет?)))



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alexeis
Дата 13.11.2012, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Не, ну так-то если линии уже рисуются, то значит все не так плохо. Правда вполне вероятно, что программка была скачана из инета, а предусмотрительный профессор попросил усовершенствовать сие творение. В этом случае не поможет.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Inonia
Дата 14.11.2012, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.10.2012

Репутация: нет
Всего: нет



Цитата(Alexeis @ 13.11.2012,  21:51)
У класса TCanvas есть свойство Pen у него толщина линии. Заливку можно сделать при помощи FloodFill , ну а ластик в простейшем случае рисовать как прямоугольник белого цвета.

Это я знаю. А как прописать?
Я уже весь код написала, а вот с этим загвоздка. Преподаватель ничего не объясняет(
Вот код моей программы:

unit Unit2;

Код

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtDlgs, jpeg, ExtCtrls, StdCtrls, Buttons;

type
  TForm2 = class(TForm)
    BitBtn1: TBitBtn;
    Panel1: TPanel;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    SavePictureDialog1: TSavePictureDialog;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    procedure BitBtn1Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure Image5MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image5MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image4Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Drag:boolean;
    Pen:boolean;
    Line:boolean;
    el:boolean;
    rect:boolean;
    x1,y1: integer;
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
form2.Hide;
form1.Show;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Image5.Picture.LoadFromFile('new.bmp');
end;

procedure TForm2.Image1Click(Sender: TObject);
begin
line:=false;
el:=true;
rect:=false;
pen:=false;
end;

procedure TForm2.Image2Click(Sender: TObject);
begin
line:=true;
el:=false;
rect:=false;
pen:=false;
end;

procedure TForm2.Image3Click(Sender: TObject);
begin
line:=false;
el:=false;
rect:=false;
pen:=true;
end;

procedure TForm2.Image4Click(Sender: TObject);
begin
line:=false;
el:=false;
rect:=true;
pen:=false;
end;

procedure TForm2.Image5MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Drag:=True;
Canvas.MoveTo(X, Y);
x1:=x;
y1:=y;
end;

procedure TForm2.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if (Drag and Pen) then Canvas.LineTo(X, Y);

end;

procedure TForm2.Image5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Line then Canvas.LineTo(x,y);
if rect then Canvas.Rectangle(x1,y1,x,y);
if el then Canvas.Ellipse(x1,y1,x,y);
Drag:=false;
end;

procedure TForm2.N2Click(Sender: TObject);
begin
if MessageDLG('Сохранить изменения в документе?',mtConfirmation,[mbOk,mbNo],1)=mrOk
then begin
if savepicturedialog1.Execute then
Image5.Picture.SaveToFile(savepicturedialog1.FileName);
end
else
Image5.Picture.LoadFromFile('new.bmp');
end;

procedure TForm2.N3Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
Image5.picture.LoadFromFile(OpenPictureDialog1.Filename);
end;

procedure TForm2.N4Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then
Image5.picture.LoadFromFile(SavePictureDialog1.Filename);
end;

procedure TForm2.N6Click(Sender: TObject);
begin
if MessageDLG('Сохранить изменения в документе?',mtConfirmation,[mbOk,mbNo],1)=mrOk
then begin
if savepicturedialog1.Execute then
Image5.Picture.SaveToFile(savepicturedialog1.FileName);end
else
begin
form1.Close;
form2.Close;
end;end;

end.


Модератор: используйте подсветку кода


Добавлено @ 07:29
Цитата(MetalFan @ 13.11.2012,  21:39)
Наработки/соображения есть?
Если нет, то тема или в работу или в центр помощи поедет.

Конечно, есть. Я уже все прописала. Осталось вот с этими вопросами разобраться)

Это сообщение отредактировал(а) Alexeis - 14.11.2012, 07:34
PM MAIL   Вверх
Alexeis
Дата 14.11.2012, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Inonia @  14.11.2012,  08:28 Найти цитируемый пост)
Это я знаю. А как прописать?

Код

Form1.Canvas.Pen.Width := 3; //толщина линии 3



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Inonia
Дата 14.11.2012, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.10.2012

Репутация: нет
Всего: нет



Цитата(Alexeis @ 14.11.2012,  07:33)
Цитата(Inonia @  14.11.2012,  08:28 Найти цитируемый пост)
Это я знаю. А как прописать?

Код

Form1.Canvas.Pen.Width := 3; //толщина линии 3

Толщина линии таким образом будет уже заданной.
А нужно сделать так, чтоб можно было выбирать толщину. Может, сделать дополнительные кнопки, которые будут появляться при нажатии на инструмент Линия? И на каждую толщину (дополнительную кнопку) написать значение.
Кстати, ластик-прямоугольник белого цвета точно пойдет, Image1 белого цвета.
PM MAIL   Вверх
Alexeis
Дата 14.11.2012, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Inonia @  14.11.2012,  08:38 Найти цитируемый пост)
А нужно сделать так, чтоб можно было выбирать толщину. Может, сделать дополнительные кнопки, которые будут появляться при нажатии на инструмент Линия? И на каждую толщину (дополнительную кнопку) написать значение.

  В паинте каждый инструмент имеет свою панельку настроек (с различными контролами), которая показывается при его выборе. Панельки для всех инструментов можно сделать сразу, но при показе формы делать невидимыми. Когда выбирают инструмент, то показывают его панель, а панель предыдущего прячут.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.