Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Дружні функції та правила їхнього використання↑ ⇐ ПредыдущаяСтр 4 из 4 Содержание книги Поиск на нашем сайте
Дружня функція – функція, яка описується в межах класу, але реалізація її знаходиться в іншому класі. При цьому вона має повний доступ до закритої частини класу. Дружні функції властиві далеко не для всіх мов програмування. Розглянемо приклад дружньої функції на мові С++:
Отже опис дружньої функції починається із ключового слова friend, далі вказується тип даних який повертається, назва функції, список параметрів в дужках. Зазвичай для отримання доступу до закритих даних об’єкта в списку параметрів вказується посилання на поточний об’єкт, як у прикладі. Одною із цілей використання дружньої функції є опис бінарних операторів для класів. Деельлєльки та їх застосування DLL (англ. Dynamic-link library — динамічно приєднувана бібліотека) — реалізовані компанією Microsoft загальні бібліотеки в ОС Windows та OS/2. Як правило бібліотеки мають розширення файлу *.dll, *.ocx (для бібліотек, що містять елементи керування ActiveX) або *.drv (драйвери старих версій ОС). Структура DLL така сама, як і в PE-файлів (Portable Executable) для 32-, 64-розрядних Windows, та New-Executable (NE) для 16-бітових Windows. DLL може містити код, дані та ресурси в будь-якій комбінації. 53ПДФ Документ … 54 Вказівник this }Результат виконання програми: Графічний Редактоор 1. Створимо папку MyGrRED, запустимо C++ Builder 2010 у віконному режимі і запишемо у нашу папку пустий проект. 2. Ставимо на форму 2 компоненти TImage, розташуємо їх у нижній лівій частині форми у вигляді двох квадратів розміром 20х20 пікселів. Це будуть віконця для вибору основного і допоміжного кольорів. Назвемо їх Image1 і Image2. 3. Ще один TImage розташуємо так, щоб він займав майже всю площу форми. Це буде наш мольберт. Назвемо його Image3. 4. Ставимо внизу форми ще одну компоненту TImage, на якій пізніше розмістимо палітру кольорів. 5. Тому вона повинна мати таку довжину, щоб на ній помістилося 10 квадратиків по 20х20 пікселів. Назвемо її Image4. 6. Ставимо на форму кнопку TSpeedButton, розташувавши її у верхньому лівому куті форми і назвавши її SBBrush. Щоб кнопка фіксувалась у натисутому та відпущеному станах, встановимо значення її властивості GroupIndex в 1, а AllowAllUp в true. Завантажимо у властивість Glyph піктограму пензлика (Brush.bmp). 7. Нижче кнопки SBBrush ставимо ще одну компоненту TspeedButton з назвою SBColor. Вона відповідатиме за вказівник кольору піксела при малюванні. Також встановимо значення її властивості GroupIndex в 1, а AllowAllUp в true. Тепер тільки одна із цих двох кнопок буде у натиснутоу стані. Завантажимо у її властивість Glyph піктограму one2one.bmp. 8. Поставимо на форму OpenPictureDialog. 9. Поставимо на форму компоненту MainMenu Створимо розділ Файл з підрозділом Відкрити. Назвемо його MOpen. Створимо розділ Правка Створимо обробники подій. 10. У заголовний файл модуля вставимо оператор: Graphics::TBitmap * BitMap = new Graphics::TBitmap; Цим ми створюємо об’єкт BitMap типу TBitMap, у якому буде зберігатись зображення для його відновлення, в разі потреби, командою Відміна. 11. Для події OnCreate форми створимо її обробник: // задаємо властивості пензля для основного і допоміжно-го кольорів Image1->Canvas->Brush->Color = clBlack; Image2->Canvas->Brush->Color = clWhite; // заповнимо віконця основного і допоміжного кольорів Image1->Canvas->FillRect (Rect (0, 0, Image1 -> Width, Image1 -> Height)); Image2->Canvas->FillRect (Rect (0, 0, Image2 -> Width, Image2 -> Height)); // задаємо ширину елементів палітри кольорів int HW = Image4->Width / 10; //зафарбуємо елементи палітри кольорів for (int i = 1; i <=10; i++){ switch (i) {case 1: Image4->Canvas->Brush->Color = clBlack; break; case 2: Image4->Canvas->Brush->Color = clAqua; break; case 3: Image4->Canvas->Brush->Color = clBlue; break; case 4: Image4->Canvas->Brush->Color = clFuchsia; break; case 5: Image4->Canvas->Brush->Color = clGreen; break; case 6: Image4->Canvas->Brush->Color = clLime; break; case 7: Image4->Canvas->Brush->Color = clMaroon; break; case 8: Image4->Canvas->Brush->Color = clRed; break; case 9: Image4->Canvas->Brush->Color = clYellow; break; case 10: Image4->Canvas->Brush->Color = clWhite; } Image4->Canvas->Rectangle ((i -1) * HW, 0, i *HW, Image4 -> Height);} // малюємо лінії на канві (для прикладу) Image3 -> Canvas -> MoveTo (0, 0); Image3 -> Canvas -> LineTo (Image3 -> Width, Image3 -> Height); Image3 -> Canvas -> MoveTo (0, Image3 -> Height); Image3 -> Canvas -> LineTo (Image3 -> Width, 0); BitMap -> Assign (Image3 -> Picture); } Тут ми задали кольори вікон: основного (Image1) – бі-лий і допоміжного (Image2) – чорний. Функцією FillRect заливаємо вікна цими кольорами. Потім формуємо палітру кольорів з допомогою ф-ції Rectangle. Потім малюємо діагональні лінії на Image3. Останній оператор запам’ятовує малюнок з Image3 в об’єкті BitMap методом Assign. 12. Активізуємо на формі Image3 і в Object Inspector, перейшовши на закладку Events, створимо обробник події ОтMouseDown і запрограмуємо його так: if ((Sender == Image4) || SBColor->Down)// режим установки основного и допоміжного кольорів{ if (Button == mbLeft){// установка основного кольору Image1->Canvas->Brush->Color = ((TImage *)Sender) ->Canvas->Pixels[X][Y]; Image1->Canvas->FillRect (Rect (0, 0, Image1->Width, Image1->Height)); } else { // установка допоміжного кольору Image2->Canvas->Brush->Color = ((TImage *)Sender)-> Canvas->Pixels[X][Y]; Image2->Canvas->FillRect(Rect(0,0,Image2->Width, Image2->Height)); } } 13. В закладці Event вікна Object Inspector за-програмуємо OnDestroy - обробник події фо-рми: BitMap -> Free();, який звільнить пам’ять після того, як наша програма завершиться. 14. Запрограмуємо обробку меню Відкрити: if (OpenPictureDialog1->Execute()) { Image3->Picture->LoadFromFile (OpenPictureDialog1->FileName); BitMap->Assign(Image3->Picture); } Ці оператори завантажують в компоненту Image3 файл із малюнком, який користувач обирає у діалоговому режимі. Цей файл зра-зу ж записується в BitMap. 15. Запрограмуємо обробку меню Відміна: Image3-> Picture ->Assign(BitMap); Оператор відновлює на канві зображення, яке було записане в BitMap. 16. В обробник події OnClick для кнопок SBBrush і SBColor запишемо оператор: if (((TSpeedButton *) Sender)->Down) BitMap->Assign(Image3->Picture); Він запам’ятає в BitMap поточне зображеня після початку роботи з черговим інструментом
|
||||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 98; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.92.60 (0.007 с.) |