|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.06.2009, 23:13 | #1 |
Пользователь
Регистрация: 14.06.2009
Сообщений: 63
|
Помогите создать программу раскраску(заливка замкнутых контуров)
Код:
Вопрос:Как закрашивать контуры на изображении? Последний раз редактировалось Stilet; 15.06.2009 в 10:03. |
15.06.2009, 00:39 | #2 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 375
|
Попробуй это:
Для закраски замкнутых областей у канвы есть метод FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle) закрашивает кистью Brush замкнутую область канвы, определенную цветом и начальной точкой закрашивания (x,y). Точка с координатами x,y является произвольной внутренней точкой заполняемой области, которая может иметь произвольную форму. Граница этой области определяется сочетанием параметров Color и FillStyle. Параметр Color указывает цвет, который используется при определении границы закрашиваемой области, а параметр FillStyle определяет, как именно по этому цвету определяется граница. Если FillStyle=fsSurface, то заполняется область, окрашенная цветом Color, а на других цветах метод останавливается. Если FillStyle=fsBorder, то наоборот, заполняется область окрашенная любыми цветами, не равными Color, а на цвете Color метод останавливается. |
15.06.2009, 10:06 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вообще то есть метод Canvas.Polygon, который хорошо описан в хелпе. Его и используют для рисования закрашенных областей )
I'm learning to live...
|
15.06.2009, 17:37 | #4 |
Пользователь
Регистрация: 14.06.2009
Сообщений: 63
|
VadEr
FloodFill не подходит. Мне нужно закрашивать место куда я кликну мышью а не по кооординатам. Мне надо сделать заливку как в пэинте. |
15.06.2009, 18:14 | #5 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 375
|
Координаты мыши (x,y) можно получить спомощью события OnMouseDown (Генерируется, когда нажата кнопка мыши). Далее вставляете x и y в FloodFill.
Последний раз редактировалось VadEr; 15.06.2009 в 18:21. |
15.06.2009, 19:54 | #6 |
Пользователь
Регистрация: 14.06.2009
Сообщений: 63
|
|
15.06.2009, 20:38 | #7 |
Пользователь
Регистрация: 14.06.2009
Сообщений: 63
|
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Image1: TImage; Button2: TButton; ColorDialog1: TColorDialog; procedure Button1Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Image1.Picture.LoadFromFile('C:\Ape x\A.bmp'); end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var cur:TPoint; begin If colordialog1.Execute then Image1.Canvas.Brush.Color:=colorDia log1.Color; Image1.Canvas.Brush.Style:=bsSolid; Image1.Canvas.FloodFill(cur.X,cur.Y ,clBlack,fsBorder); end; end. Почему то ничего не закрашивает. Последний раз редактировалось sinobithug; 15.06.2009 в 20:56. |
15.06.2009, 21:05 | #8 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 375
|
Image1.Canvas.FloodFill(cur.X,cur.Y,clBlack,fsBorder);
Код:
|
15.06.2009, 21:22 | #9 |
Пользователь
Регистрация: 14.06.2009
Сообщений: 63
|
Не известные идеитефикаторы x y
Их надо задать в var какой тип данных им присвоить? procedure TForm1.Button1Click(Sender: TObject); var X:TPoint; Y:TPoint; begin Image1.Picture.LoadFromFile('C:\Ape x\A.bmp'); If colordialog1.Execute then Image1.Canvas.Brush.Color:=colorDia log1.Color; Image1.Canvas.Brush.Style:=bsSolid; Image1.Canvas.FloodFill( X,Y,clBlack,fsBorder); end; Ошибка. Incopatible types Integer and TPoint Последний раз редактировалось sinobithug; 15.06.2009 в 21:29. |
15.06.2009, 21:26 | #10 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 375
|
Их не нада задавать, они уже объявлены (уберите var):
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
кто может создать программу на строки в паскале? пожайлуста помогите. | Tenzen | Помощь студентам | 5 | 05.03.2009 22:16 |
Помогите создать программу вычисления данных по графику | Radamant | Помощь студентам | 1 | 07.12.2008 12:56 |
Помогите создать программу на С++ | Rembo | Помощь студентам | 1 | 25.01.2008 20:46 |