|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.07.2008, 16:06 | #1 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
Canvas. Первое Начало (#001)
Уважаемые посетители и модераторы. Прошу не удалять мои вопросы. Я их задаю, потомучто не получил ответов в уже созданных.
Если коротко, то при попытке изучить компонент DrawGrid , StringGrid , стало ясно, что для того, чтобы там что-то рисовать и менять цвет необходимо освоить такое явление как Canvas. После того как в этой огромной помойке под названием Internet так и не было найдено ничего, где бы про это доходчиво объясняли, я полез смотреть help в самом дельфи (Мануал вообще раньше всегда боляся читать). Нашёл там листинг, кинул на форму компоненты: кнопка и Image. Затем скопировал (как думаю верно) часть кода из листинга в кнопку (щёлкнув на ней 2 раза). В Итоге получилось то, что изображено на рис.1 Затем, мною была закомментирована строка с ошибкой. Программа запустилась, появился этот красный квадратик. Но я так понял, что должно было ещё что-то быть. Вопросы: 1. Правильно ли я понимаю, что Canvas - это, что-то вроде команды: "Нарисовать" ? Дайте пожалуйста определение этому компоненту. Полное, но без "воды". 2. procedure TForm1.Button1Click(Sender: TObject); var MyRgn: HRGN ; // Это объявление новой переменной. А что за класс ? begin MyRgn := CreateRectRgn(100,100,200,200);//Создание чего здесь происхдит. ? SelectClipRgn(Image1.Canvas.Handle, MyRgn); // Что означает ClipRgn ? Image1.Canvas.Brush.Color := clRed; //Объект.КомандаCanvasкрисованию/Инструментрисования - я правлиьно понимаю ? Image1.Canvas.FillRect(Image1.Canva s.ClipRect); //Что такое FillRect и ClipRect? Что здесь происходит ? Image1.Invalidate; //Что такое Invalidate ? Что здесь происходит ? SelectClipRgn(Image1.Canvas.Handle, nil);// Что такое nil ? DeleteObject(MyRgn); // Зачем удалять нашу переменную ? end; 3. Почему пишется, что в компонентах DrawGrid и StringGrid есть свойство Canvas, а в столбике слева Properties я его не вижу ? Прошу Вас отнестисьс пониманием к обилию моих вопросов. |
18.07.2008, 16:13 | #2 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
Более полный рисунок ошибки
|
19.07.2008, 21:45 | #3 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
1. Канвас (в просторечии канва) это холст на к-ром происходит рисование, т.е. вывод графики. С точки зрения Delphi это класс, с набором свойств и методов, как и у любого класса, TForm например. Он в свою очередь является свойством многих компонентов, почти все визуальные компоненты имеют канву.
Рисование происходит вызовом методов канвы, Ellipse рисует круг, Rectangle рисует квадрат и т.д. В справке к TCanvas есть их всех описание. 2. Пример сложноват для начала. Вот попроще: Код:
3. В инспекторе объектов видны только те свойства, к-рые объявлены как published, туда вносят те свойства к-рые имеет смысл редактировать в design time т.е. при разработке в среде (в отличие от runtime - т.е. во время выполнения программы). Для канвы это не нужно, поэтому ее там нет.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С# - начало | mirawoo | Софт | 2 | 14.07.2008 17:48 |
Как из Даты взять первое число? | valerij | Microsoft Office Excel | 15 | 17.06.2008 13:39 |
Как уменьшить мое первое окно | BOPOHA | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 29.12.2007 17:57 |
ООП мое первое начало | cross | Общие вопросы Delphi | 1 | 18.03.2007 21:58 |