Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2008, 16:06   #1
Albert2008
Пользователь
 
Регистрация: 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 я его не вижу ?

Прошу Вас отнестисьс пониманием к обилию моих вопросов.
Изображения
Тип файла: jpg рис1.jpg (47.1 Кб, 155 просмотров)
Albert2008 вне форума Ответить с цитированием
Старый 18.07.2008, 16:13   #2
Albert2008
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 26
По умолчанию

Более полный рисунок ошибки
Изображения
Тип файла: jpg рис1-1.jpg (67.3 Кб, 140 просмотров)
Albert2008 вне форума Ответить с цитированием
Старый 19.07.2008, 21:45   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

1. Канвас (в просторечии канва) это холст на к-ром происходит рисование, т.е. вывод графики. С точки зрения Delphi это класс, с набором свойств и методов, как и у любого класса, TForm например. Он в свою очередь является свойством многих компонентов, почти все визуальные компоненты имеют канву.
Рисование происходит вызовом методов канвы, Ellipse рисует круг, Rectangle рисует квадрат и т.д. В справке к TCanvas есть их всех описание.

2. Пример сложноват для начала.
Вот попроще:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Form1.Canvas do 
  begin
    MoveTo(0,0); //перемещаем позицию карандаша
    LineTo(200,200); //рисуем линию
    Pen.Color:=clRed; //меняем цвет карандаша на красный
    LineTo(0,50); //рисуем линию красным цветом
    Brush.Color:=clBlue; //кисть(заливка) синяя
    Rectangle(50,50,150,150); //сверху рисуем квадрат
  end;
end;
На этом закругляюсь, т.к. наверное в любой книге по Delphi есть глава как работать с канвой.

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)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# - начало 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